【发布时间】:2021-04-14 11:47:43
【问题描述】:
这是@Duck 非常有帮助地回答了上一个问题。 (R ggpot: Arranging on one page several ggplots created with a loop / name each plot differenly)。我希望将几个由循环创建的 ggplots 放在一页上。我做了一个模型循环,@Duck 提供了一种方法来做到这一点。它工作得非常好,以至于我的胃口更大,现在想将整个事情嵌套在另一个循环中,创建几个这样的页面(每个页面都显示来自不同年份的数据)。但是效果不好。
这是@Duck 建议的,在一页上的几个情节:
library(dplyr)
library(ggplot2)
library(patchwork)
#Create list
List <- list()
cylinder<-unique(mtcars$cyl)
#Loop
for (value in seq_along(cylinder)) {
m<-mtcars%>%
filter(cyl==cylinder[value])%>%
group_by (gear)%>%
summarise(number=n(), average=mean(mpg), se=sd(mpg))
print(m) # reporting the numbers
a<-m%>%
mutate(gear=factor(gear, levels=unique(gear)))%>%
ggplot()+
geom_bar(aes(x=gear, y=average), stat = 'identity', fill ='red') +
geom_errorbar( aes(x= gear, ymin=average-se, ymax=average+se), width=0.2, colour="black", alpha=1, size=1) +
xlab("gears") + ylab("average mpg") +
ggtitle (paste( "cyliner:", value ))+
theme(axis.ticks.x=element_blank())
print(a)
List[[value]]<-a}
#Wrap plots
wrap_plots(List,nrow = 1)
不错!现在,为了简单起见,假设我们只想要三个相同的。这是我尝试嵌套它的方法。
library(dplyr)
library(ggplot2)
library(patchwork)
repeats<-c(1,2,3) # for the outer loop.
List <- list()
cylinder<-unique(mtcars$cyl)
#Loop 1:
for (pic in seq_along(repeats)) {
# loop 2:
for (value in seq_along(cylinder))
# same code:
m<-mtcars%>%
filter(cyl==cylinder[value])%>%
group_by (gear)%>%
summarise(number=n(), average=mean(mpg), se=sd(mpg))
print(m) # reporting the numbers
a<-m%>%
mutate(gear=factor(gear, levels=unique(gear)))%>%
ggplot()+
geom_bar(aes(x=gear, y=average), stat = 'identity', fill ='red') +
geom_errorbar( aes(x= gear, ymin=average-se, ymax=average+se), width=0.2, colour="black", alpha=1, size=1) +
xlab("gears") + ylab("average mpg") +
ggtitle (paste( "cyliner:", value ))+
theme(axis.ticks.x=element_blank())
print(a)
List[[value]]<-a}
#Wrap plots
wrap_plots(List,nrow = 1)
List[[value]]<-a }
#Wrap plots
wrap_plots(List,nrow = 1)
print (List) #reporter
List <- list()
print(List) #reporter
}
判断列表被填充多少次,然后归零,编译正确地通过循环。但是只制作了 6 个单图(不是 9 个),并且没有包含三个包裹图的页面。建议?
【问题讨论】: