将 arrangeGrob 存储到对象,不创建可打印对象

store arrangeGrob to object, does not create printable object

我想保存,但不打印(暂时),将一堆 ggplot() 打印到网格中(通过 arrangeGrob(),对吗? ), 然后打印并稍后检索它们。

这是 的重启。 奇怪的是, 不起作用,我不知道为什么。 我正在使用完全相同的代码。

  library(ggplot2)
  p1 <- ggplot(mtcars, aes(x=factor(cyl), y=mpg)) + geom_boxplot()
  p2 <- ggplot(mtcars, aes(x=factor(cyl), y=wt)) + geom_boxplot()
  library(gridExtra)
  y <- arrangeGrob(p1, p2)
  class(y)
  y

奇怪的是,不会(如上面的答案)产生地块网格,但是:

> class(y)
[1] "gtable" "grob"   "gDesc" 
> y
TableGrob (2 x 1) "arrange": 2 grobs
  z     cells    name           grob
1 1 (1-1,1-1) arrange gtable[layout]
2 2 (2-2,1-1) arrange gtable[layout]

这是怎么回事?

最近更新了 gridExtra 包,从而改变了 arrangeGrob 的内部工作方式以及它 returns 的对象类型(现在是 gtable)。

您需要致电grid.draw:

grid.draw(y)

编辑: 不要像最初建议的那样使用 plot();它将添加灰色背景,并且仅用于调试 gtables。