首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gtable对象的多图化

gtable对象的多图化
EN

Stack Overflow用户
提问于 2017-11-17 20:06:47
回答 1查看 236关注 0票数 0

The 函数在这里定义在菜谱中。

考虑下面的图表。

代码语言:javascript
复制
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对象。

代码语言:javascript
复制
g1 = ggplot_gtable(ggplot_build(p1))
g1 = DoStuff(g1)
g2 = ggplot_gtable(ggplot_build(p1))
g2 = DoStuff(g2)

我可以用grid.draw打印一个gtable。

如何修改多线程函数,使其同时接受gtable ggplot 对象,而不仅仅是ggplot对象?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-17 20:31:57

在我的有点偏颇的观点里你最好用

代码语言:javascript
复制
gridExtra::grid.arrange(g1,g2, ncol=2)

但要回答你的问题:

变化

代码语言:javascript
复制
print(plots[[i]], vp = viewport(layout.pos.row = matchidx$row,
                                layout.pos.col = matchidx$col))

到某种程度上

代码语言:javascript
复制
  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()
  }

就像以前一样,

代码语言:javascript
复制
g1 <- ggplotGrob(p1)
g2 <- ggplotGrob(p2)
multiplot(g1,g2, layout=matrix(1:2,nrow=1))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47358491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档