如何将不确定数量的ggplot项目放入网格中

时间:2019-07-09 19:55:01

标签: r list ggplot2 gridextra

我想将几张图放入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]])

返回下标错误

ggtest <- list(gg1,gg2,gg3)

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

仅返回“ gList”错误中允许的“怪胎”。

这里有任何帮助的人,也许我看错了方向,还是应该使用另一个功能?

1 个答案:

答案 0 :(得分:3)

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`.