store arrangeGrob to object,不创建可打印对象

max*_*eld 10 r ggplot2 gridextra

我想保存,但不打印(现在),一堆ggplot()s进入网格(通过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
Run Code Online (Sandbox Code Playgroud)

奇怪的是,这并没有(如上面的答案)产量图的网格,但是:

> 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]
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?

Rol*_*and 8

gridExtra软件包最近已更新,从而改变了arrangeGrob内部工作方式以及它返回的对象类型(现在为a gtable).

你需要打电话grid.draw:

grid.draw(y)
Run Code Online (Sandbox Code Playgroud)

结果情节

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