在ggplots

时间:2015-07-20 13:48:53

标签: r ggplot2 gridextra do.call

这个问题与这个问题有关:

Related post

我目前的问题是:在我的代码中,我通过调用lapply生成列表中的ggplots列表。我首先使用lapply,因为我执行了相当多的类似ggplots,并且手动生成每个ggplots太麻烦了。我怎样才能概括我的代码?

p <- qplot(rnorm(30))

plist <- lapply(c(1:10),FUN=function(x){

  qplot(rnorm(30))

})

#works
year.plots <- list(p,p)
do.call(grid.arrange, c(year.plots))

#works
plist[[1]]

#works
grid.arrange(p,plist[[1]])

#does not work
year.plots <- list(p,plist[[1]])
do.call(grid.arrange, c(year.plots))

#How to generalize with the following idea?
year.plots <- list(p,plist[[1]],plist[[2]],...)
do.call(grid.arrange, c(year.plots))

3 个答案:

答案 0 :(得分:9)

使用gridExtra v&gt; = 2.0.0,您现在可以,

grid.arrange(grobs = year.plots)

答案 1 :(得分:6)

没有必要将列表包含在c() do.call(grid.arrange, year.plots)do.call(grid.arrange, c(year.plots))中。

但是,如果要包含额外的参数,则需要将它们与c()部分中的列表一起包装在一起,如下所示:

do.call(grid.arrange, c(year.plots, ncol=2))

答案 2 :(得分:0)

好的我很傻我40分钟后在代码中发现了错误。

do.call(grid.arrange, c(year.plots,plist,nrow=3))