我如何摆脱 arrangeGrob 中的随机背景网格

how do I get rid of random background grid from arrangeGrob

我需要将几个地块包裹在一个网格中,通常是奇数,所以通常会有一个 "empty spot"。 我需要使用 arrangeGrob()——而不是 grid.arrange()——因为我想保存情节以备后用,而不是立即 plot()

这很好用,但奇怪的是,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()
p3 <- ggplot(mtcars, aes(x =factor(cyl), y=disp)) + geom_boxplot()
library(gridExtra)
y <- arrangeGrob(p1, p2, p3, ncol = 2)
plot(y)

在右下角生成一个带有一些奇怪的灰色东西的图:

将此与 grid.arrange() 进行比较:

grid.arrange(p1, p2, p3, ncol = 2)

产生一个没有灰色怪异的漂亮情节:

右下角这个灰色的东西是哪里来的?我该如何摆脱它?

注意我无法通过更改ncol来避免空位;我有时地块数量不均匀,所以总会有空位。 我可以接受空位,我只是喜欢它们干净。 (孤立地说,最后一句话听起来很漂亮OCD-ish


更新

包作者(?)在下面回答:我应该使用 grid.draw(y)

类似的问题仍然存在(也许是相同的根本原因?):如果您之前绘制 some 对象,"empty spot" 仍然被 占据过去剧情。 诡异的。 像这样:

plot(p1)
grid.draw(y)

产量:

删除 nrow 参数。像这样:

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, ncol = 2)
plot(y)

arrangeGrob() 现在 returns 一个 gtable,你应该用 grid.draw() 绘制它,而不是 plot()

grid.draw(y)

产量

要去除过去情节中的人工制品(按照上述更新)使用 grid.newpage()