The 函数在这里定义在菜谱中。
考虑下面的图表。
p1 = ggplot(mtcars,aes(y=mpg, x=cyl)) + geom_point()
p2 = ggplot(mtcars,aes(y=disp, x=cyl)) + geom_point()
multiplot(p1,p2, layout=matrix(1:2,nrow=1))

我希望(使用函数DoStuff)将绘图操作为gtable对象,而不是ggplot对象。
g1 = ggplot_gtable(ggplot_build(p1))
g1 = DoStuff(g1)
g2 = ggplot_gtable(ggplot_build(p1))
g2 = DoStuff(g2)我可以用grid.draw打印一个gtable。
如何修改多线程函数,使其同时接受gtable ggplot 对象,而不仅仅是ggplot对象?
发布于 2017-11-17 20:31:57
在我的有点偏颇的观点里你最好用
gridExtra::grid.arrange(g1,g2, ncol=2)但要回答你的问题:
变化
print(plots[[i]], vp = viewport(layout.pos.row = matchidx$row,
layout.pos.col = matchidx$col))到某种程度上
if(inherits(plots[[i]], "gg")) {
print(plots[[i]], vp = viewport(layout.pos.row = matchidx$row,
layout.pos.col = matchidx$col))
} else if(inherits(plots[[i]], "gtable")) {
pushViewport(viewport(layout.pos.row = matchidx$row,
layout.pos.col = matchidx$col))
grid.draw(plots[[i]])
upViewport()
}就像以前一样,
g1 <- ggplotGrob(p1)
g2 <- ggplotGrob(p2)
multiplot(g1,g2, layout=matrix(1:2,nrow=1))https://stackoverflow.com/questions/47358491
复制相似问题