如何使用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