【发布时间】:2015-03-15 16:00:09
【问题描述】:
我正在使用gridExtra::grid.arrange 将多个图放置到一个图像中,并且希望可以选择将组合图保存为一个对象,该对象可以从函数中作为返回对象列表的一部分返回。理想情况下,我想在不打印绘图对象的情况下执行此操作。
下面的代码创建了两个图,将它们与grid.arrange 结合起来,并尝试将结果保存到x。但是,x 的计算结果为 NULL,并且打印了绘图。 grid.arrange 的文档将我指向 arrangeGrob 并建议可以使用 plot=FALSE 关闭绘图,但当我尝试这样做时会出错,因为 FALSE 不是 grob 对象。
对我不理解的内容有什么建议吗?
# R under development
# Windows 7 (32 bit)
# ggplot2 1.0.0
# gridExtra 0.9.1
p1 <- ggplot(mtcars, aes(x=factor(cyl), y=mpg)) + geom_boxplot()
p2 <- ggplot(mtcars, aes(x=factor(cyl), y=wt)) + geom_boxplot()
x <- gridExtra::grid.arrange(p1, p2)
x
根据 cmets,我正在添加此编辑。当我用arrangeGrob 尝试它时,我根本没有得到任何输出。
> gridExtra::arrangeGrob(p1, p2)
> print(gridExtra::arrangeGrob(p1, p2))
Error: No layers in plot
> x <- gridExtra::arrangeGrob(p1, p2)
> x
Error: No layers in plot
【问题讨论】:
-
尝试改用
arrangeGrob -
@hrbrmstr:我认为一个小答案是值得的。在这种情况下,帮助页面相当无用,尽管有相当多的经验,但我无法在脑海中回答这个问题。
-
arrangeGrob实际上变得更奇怪了(我一直忘记代码在 cmets 中没有格式,所以我对问题进行了编辑)。