ggplot复杂的GridExtra布局

时间:2018-01-24 21:19:08

标签: r ggplot2 gridextra

我想以下列方式布局三个图:

[FirstPlot]
[2nd] [3rd]

第一个图是第二个和第三个图的顶部。第一个图是第二个和第三个图的宽度的两倍。现在让我们生成虚拟数据:

library(gridExtra)
library(grid)
library(ggplot2)
library(lattice)

plot1 <- qplot(1, 1)
plot2 <- qplot(1, 1)
plot3 <- qplot(1, 1)

lay <- rbind(c(1,1),
             c(2,3))

绘制出来的语法应该是:

grid.arrange(grobs = c(plot1, plot2, plot3), 
             layout_matrix = lay)

实际上它不应该是因为它不起作用。我收到以下错误。该命令应该用什么来完成?我想我的grobs部分错了。

  

t:b:NA / NaN参数

出错

3 个答案:

答案 0 :(得分:3)

我想提供一个patchwork解决方案,因为它是一个很酷的软件包:

library(patchwork)
library(ggplot2)

plot1 <- ggplot(mtcars, aes(wt, mpg)) + geom_point()
plot2 <- ggplot(diamonds, aes(cut, price)) + geom_boxplot()
plot3 <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_point()

# One way of doing it
plot1 + (plot2 + plot3) + plot_layout(ncol = 1)

# Another, alternative solution
plot1 /
  (plot2 | plot3)

返回:

enter image description here

答案 1 :(得分:2)

grid.arrange(grobs = list(plot1, plot2, plot3), 
             layout_matrix = lay)

答案 2 :(得分:1)

有一个简单的解决方法。使用grobs = list(plot1, plot2, plot3)