在ggplot2中将三个相同大小的图排列在两行上

R.V*_*Van 1 r ggplot2

我试图在 ggplot2 中排列三个相同大小的图(或多或少是二次的)。我希望两个图位于上行,一个位于下行。下排的单个图应居中。我只知道当下部图左对齐时如何排列图。

到目前为止,我一直在使用 ggarrange 来排列绘图(因为使用了align=“v”命令)。我的代码看起来像这样(首先我创建了三个图 p1、p2、p3):

ggsave("H:/Documents/graph.pdf", height=8, width=10, units="in", dpi=300,
   ggarrange(p1, p2, p3, ncol=2, nrow=2, align="v"))
Run Code Online (Sandbox Code Playgroud)

我也尝试过将 grid.arrange 与layout_matrix 命令一起使用,但这根本不起作用!

有谁知道我如何将下部图居中?

Jul*_*ora 5

layout_matrix确实是您所需要的:

p1 <- p2 <- p3 <- qplot(mpg, wt, data = mtcars)
grid.arrange(p1, p2, p3, layout_matrix = matrix(c(1, 3, 2, 3), nrow = 2))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在哪里

matrix(c(1, 3, 2, 3), nrow = 2)
#      [,1] [,2]
# [1,]    1    2
# [2,]    3    3
Run Code Online (Sandbox Code Playgroud)

显示哪个图占据最终输出的哪一部分,如果这就是您所说的第三个图居中的意思。

或者,

(layout_matrix <- matrix(c(1, 1, 2, 2, 4, 3, 3, 4), nrow = 2, byrow = TRUE))
#      [,1] [,2] [,3] [,4]
# [1,]    1    1    2    2
# [2,]    4    3    3    4
grid.arrange(p1, p2, p3, layout_matrix = layout_matrix)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述