鉴于两个ggplots,我们可以并排排列它们
library(ggplot2) library(gridExtra) # Data data(iris) df <- data.frame(y = rnorm(100)) # Plotting p1 <- qplot(data=iris, Sepal.Width, Sepal.Length) p2 <- ggplot(df, aes(x=1:100, y=y)) + geom_line() grid.arrange(p1, p2, ncol=2)
如果其中一个图是一个ggpair
对象,我们怎么能这样做呢?
library(GGally) p1 <- ggpairs(iris, colours='Species') p2 <- ggplot(df, aes(x=1:100, y=y)) + geom_line() grid.arrange(l, p2, ncol=6) # Error in gList(list(list(data = list(Sepal.Length = c(5.1, 4.9, 4.7, # 4.6, : only 'grobs' allowed in "gList"
Roland.. 8
首先编辑该print.ggpairs
函数,使其不再调用grid.newpage
.对于那个电话
library(GGally) fixInNamespace("print.ggpairs", ns = "GGally")
并将第32行作为评论.然后你可以使用网格函数:
library(ggplot2) data(iris) df <- data.frame(y = rnorm(100)) p1 <- ggpairs(iris, colours='Species') p2 <- ggplot(df, aes(x=1:100, y=y)) + geom_line() library(grid) grid.newpage() pushViewport(viewport(layout=grid.layout(1,2))) vp1 <- viewport(layout.pos.col=1, layout.pos.row=1) vp2 <- viewport(layout.pos.col=2, layout.pos.row=1) pushViewport(vp1) p1 popViewport() pushViewport(vp2) plot(p2, vp = vp2) popViewport()
编辑:我提交了一个功能请求,并且ggally维护者添加了一个参数来关闭grid.newpage
,即你print(p1, gridNewPage = FALSE)
现在可以做:https://github.com/ggobi/ggally/issues/125
首先编辑该print.ggpairs
函数,使其不再调用grid.newpage
.对于那个电话
library(GGally) fixInNamespace("print.ggpairs", ns = "GGally")
并将第32行作为评论.然后你可以使用网格函数:
library(ggplot2) data(iris) df <- data.frame(y = rnorm(100)) p1 <- ggpairs(iris, colours='Species') p2 <- ggplot(df, aes(x=1:100, y=y)) + geom_line() library(grid) grid.newpage() pushViewport(viewport(layout=grid.layout(1,2))) vp1 <- viewport(layout.pos.col=1, layout.pos.row=1) vp2 <- viewport(layout.pos.col=2, layout.pos.row=1) pushViewport(vp1) p1 popViewport() pushViewport(vp2) plot(p2, vp = vp2) popViewport()
编辑:我提交了一个功能请求,并且ggally维护者添加了一个参数来关闭grid.newpage
,即你print(p1, gridNewPage = FALSE)
现在可以做:https://github.com/ggobi/ggally/issues/125
为了快速,您可以从ggpairs图创建一个网格对象.从?grid.grab
帮助页面开始,它可能不如Roland编写新ggpairs打印方法的方法强大.*...不保证忠实地复制所有可能的网格输出."(虽然使用wrap
参数表明它应该,但它超出我的肯定)
library(ggplot2) library(grid) library(gridExtra) library(GGally) df <- data.frame(y = rnorm(100)) p1 <- ggpairs(iris, colours='Species') p2 <- ggplot(df, aes(x=1:100, y=y)) + geom_line() g <- grid.grabExpr(print(p1)) grid.arrange(g, p2, widths=c(0.8,0.2))