【问题标题】:How to put two 'vcd' grid graphics in a single plot?如何将两个“vcd”网格图形放在一个图中?
【发布时间】:2015-06-26 16:28:58
【问题描述】:

我想在 R 中的一个图中放置两个(有点不标准的)网格图形。

试试:

require(vcd)
mosaic(Titanic)
assoc(Titanic)

问题是这些不是lattice 图形,据我所知,没有layout 参数或类似参数。由于这些是grid 图表,它们不受base 图表技巧的影响,例如par(mfrow=c(1,2))

如何将上面的两个图表放在一个图中,两个图表在同一条线上?

我已经尝试了How to plot grid plots on a same page? 中的建议,但它们似乎不适用于vcd 情节。最终我想获得类似的东西:

【问题讨论】:

  • 两个情节似乎都没有返回任何对象......而且我看不到如何通过查看 grid.ls() 来抓住 grobs。你可以滥用answer here ... mosaic(Titanic) ; m <- grid.grab() ; assoc(Titanic) ; a <- grid.grab(); grid.newpage() ;grid.arrange(m, a, ncol=2)
  • @user20650:您应该发布作为答案。
  • 感谢@BondedDust;我期待有一种更简洁的方法......但也许这是达到目的的快速方法
  • 您可以将return_grob = TRUE 参数传递给mosaicplot,但这似乎仍然使用grid.grab。
  • @baptiste 你能发布这种方法作为答案吗?

标签: r plot data-visualization r-grid


【解决方案1】:

这两个情节似乎都没有返回任何对象,而且我看不到如何通过查看 grid.ls() 来获取 grobs。所以使用this answer的想法

library(vcd) 
library(gridGraphics)
library(gridExtra)

mosaic(Titanic)  
m <- grid.grab()  

assoc(Titanic)  
a <- grid.grab()

grid.newpage()
grid.arrange(m, a, ncol=2)

我相信会有更多类似网格的方法,但是...

【讨论】:

  • 我不确定类似网格的方法是否可行。这些函数都没有返回网格对象,尽管有一个 newpage=FALSE 选项来抑制将它们用作网格函数的障碍之一。此外,我的努力失败了,所以我认为你应该站出来争取荣誉。
  • 谢谢!这就是我想要的。
【解决方案2】:

类似于How to plot grid plots on a same page? 中的解决方案也可用于vcd 显示。不同之处在于您需要设置newpage = FALSE(以防止打开新显示器)并且您需要自己推送和弹出视口(在@987654325等更复杂的显示器中重新使用vcd图形时会很方便,例如@987654326 @ 树)。

Titanic 数据的马赛克和关联显示可以可视化为:

grid.newpage()
pushViewport(viewport(layout = grid.layout(1, 2)))

pushViewport(viewport(layout.pos.col = 1, layout.pos.row = 1))
mosaic(Titanic, newpage = FALSE)
popViewport()

pushViewport(viewport(layout.pos.row = 1, layout.pos.col = 2))
assoc(Titanic, newpage = FALSE)
popViewport()

屈服

【讨论】:

    【解决方案3】:

    另一种选择是vcdmplot()函数(详见?vcd::mplot):

    library(vcd)
    mplot(
      mosaic(Titanic, return_grob = TRUE),
      assoc(Titanic, return_grob = TRUE),
      keep_aspect_ratio = FALSE
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多