如何使用grid.arrange来安排一个variables列表?

library(ggplot2) df <- data.frame(x=1:10, y=rnorm(10)) p1 <- ggplot(df, aes(x,y)) + geom_point() plist <- list(p1,p1,p1,p1,p1) # In my real example,a plot function will fit a ggplot to a list of datasets #and return a list of ggplots like the example above. 

我想在gridExtra使用grid.arrange()来安排图。

如果plist的地块数量是可变的,我将如何做到这一点?

这工作: grid.arrange(plist[[1]],plist[[2]],plist[[3]],plist[[4]],plist[[5]])

但我需要一个更一般的解决scheme。 想法?

这个怎么样:

 library(gridExtra) n <- length(plist) nCol <- floor(sqrt(n)) do.call("grid.arrange", c(plist, ncol=nCol)) 

在这里输入图像描述

为了完整起见( 最近已经回答了这个问题,最近已经回复了这个问题),我想用cowplot包添加一个解决scheme:

 cowplot::plot_grid(plotlist = plist, ncol = 2) 

在这里输入图像描述

只要您使用每个函数中的grobs =参数来指定列表,就可以使用grid.arrange()和列表arrangeGrob() 。 例如在你给的例子中:

 library(ggplot2) library(gridExtra) df <- data.frame(x=1:10, y=rnorm(10)) p1 <- ggplot(df, aes(x,y)) + geom_point() plist <- list(p1,p1,p1,p1,p1) grid.arrange(grobs = plist, ncol = 2) ## display plot ggsave(file = OutFileName, arrangeGrob(grobs = plist, ncol = 2)) ## save plot