如何在网格中放置未定义数量的ggplot项目

How to put undefined amount of ggplot items in a grid

我有几个图表想放入 grid.arrange 函数中。但是,我并不总是事先知道网格中必须有多少图表,并且希望避免必须始终如一地检查代码以更改每个 grid.arrange 函数。

gg1 <- ggplot(mtcars, aes(cyl)) + geom_bar()
gg2 <- ggplot(mpg, aes(class, hwy)) + geom_bar(stat = "identity")
gg3 <- ggplot(mpg, aes(hwy)) + geom_area(stat = "bin")              

grid.test <- grid.arrange(gg1,gg2,gg3)

我已经尝试粘贴项目了。

grid.arrange(paste("gg", 1:3, sep= ""))

我也试过将它们放入一个列表中并对其进行解析,但无法在 grid.arrange 中获得未定义数量的它们。特别是 grid.arrange 仅在您抓取元素时才接受它,这不允许多项选择。

ggtest <- list(gg1,gg2,gg3)

grid.test <- grid.arrange(ggtest[[1:3]])

Returns下标错误

ggtest <- list(gg1,gg2,gg3)

grid.test <- grid.arrange(ggtest[1:3])

returns 仅 'grobs' 允许 "gList" 错误。

欢迎在这里提供任何帮助,也许我看错了,或者是否应该使用其他功能?

library(gridExtra)
library(ggplot2)

gg1 <- ggplot(mtcars, aes(cyl)) + geom_bar()
gg2 <- ggplot(mpg, aes(class, hwy)) + geom_bar(stat = "identity")
gg3 <- ggplot(mpg, aes(hwy)) + geom_area(stat = "bin")              

ggtest <- mget(paste0("gg", 1:3))

do.call(grid.arrange, ggtest)
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.