我试图安排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"))
我也使用grid.arrange与layout_matrix命令尝试,但都没有奏效!
没有任何人有一个想法,我怎么能居中下阴谋?
答案 0 :(得分:1)
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))
其中
matrix(c(1, 3, 2, 3), nrow = 2)
# [,1] [,2]
# [1,] 1 2
# [2,] 3 3
显示哪些情节占据最终输出的哪一部分,如果这是你的意思由第三情节为中心。
或者,
(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)
答案 1 :(得分:0)
这是一个使用允许标签的 ggarrange 的选项:
library(ggpubr)
p1 <- p2 <- p3 <- qplot(mpg, wt, data = mtcars)
top_row = ggarrange(p1, p2, ncol = 2, labels = c("a", "b"))
bottom_row = ggarrange(NULL, p3, NULL, ncol = 3, labels = c("", "c", ""), widths = c(1,2,1))
final_plot = ggarrange(top_row, bottom_row, ncol = 1)