我想在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
图。最终我想获得类似的东西:
答案 0 :(得分:3)
两个情节似乎都没有返回任何对象,我无法看到如何从grid.ls()
看到凹凸。所以使用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)
我相信会有更多类似网格的方法,但是......
答案 1 :(得分:3)
与How to plot grid plots on a same page?中的解决方案类似的内容也可用于vcd
显示。不同之处在于您需要设置newpage = FALSE
(以防止打开新显示)并且您需要自己推送和弹出视口(在更复杂的显示中重复使用vcd
图形时这很方便例如partykit
树)。
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()
产生
答案 2 :(得分:1)