Ben*_*min 12 r ggplot2 gridextra
我将多个绘图放在一个图像中,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
Run Code Online (Sandbox Code Playgroud)
根据评论,我正在添加此编辑.当我尝试时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
Run Code Online (Sandbox Code Playgroud)
您编辑中的代码无法正常工作,因为您没有加载gridExtra
.
library(gridExtra)
y <- arrangeGrob(p1, p2, ncol = 1)
class(y)
#[1] "gtable" "grob" "gDesc"
grid.draw(y)
Run Code Online (Sandbox Code Playgroud)
编辑:从 2.0.0 版开始,我对grid
以下依赖项的评论不再有效,因为grid
现在已导入。
编辑:使用 gridExtra 版本 >= 2.0.0,无需附加任何一个包,
p <- ggplot2::qplot(1,1)
x <- gridExtra::arrangeGrob(p, p)
grid::grid.draw(x)
Run Code Online (Sandbox Code Playgroud)