如何从arrangeGrob

时间:2015-07-16 19:59:20

标签: r ggplot2 gridextra

我需要在网格中包含几个图,通常是一个不均匀的数字,所以通常会有一个空白点#34; 。 我需要使用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,请注意我无法避免空白点;我有时的情节数量不均匀,所以总是空点。 我有空位,我只是喜欢他们干净。 (孤立地说,最后一句听起来很OCD-ish

更新

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

还存在类似的问题(可能是相同的根本原因?):如果您之前绘制某些对象,那么&#34;空白点&#34;仍然被过去的情节所占据。 奇怪的。 像这样:

plot(p1)
grid.draw(y)

的产率:

past plot weirdness

2 个答案:

答案 0 :(得分:4)

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

grid.draw(y)

产量

fine plot

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

答案 1 :(得分:-1)

删除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)