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

标签 r ggplot2 gridextra

我需要将多个地 block 包裹在一个网格中,通常是奇数个,所以经常会有一个“空点”。 我需要使用 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)

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

grey weirdness

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

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

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

enter image description here

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

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


更新

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

一个类似的问题仍然存在(也许是相同的根本原因?):如果您之前绘制一些对象,“空白点”仍然被那个过去图占据。 诡异的。 像这样:

plot(p1)
grid.draw(y)

产量:

past plot weirdness

最佳答案

arrangeGrob() 现在返回一个 gtable,您应该使用 grid.draw() 而不是 plot() 绘制它。

grid.draw(y)

产量

fine plot

要去除过去绘图中的人工制品(按照上述更新),请使用 grid.newpage()

关于r - 我如何摆脱 arrangeGrob 中的随机背景网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31463445/

相关文章:

r - 使用循环一次比较 R 中的三个(或更多)变量与 ifelse

r - 使用汇总统计在 ggplot2 中生成箱线图

r - for循环中的多个图忽略par

r - H2O R 中的子集化

regex - 正则表达式匹配和替换 pvalue 字符串

r - 解决 R 中的双重求和

r - 如何确保文本标题位于多边形对象内部?

r - 在ggplot2中绘制线条

r - 在同一个图中绘制 igraph 包中的多个图