在ggplot2

时间:2019-02-02 16:37:03

标签: 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"))

我也使用grid.arrange与layout_matrix命令尝试,但都没有奏效!

没有任何人有一个想法,我怎么能居中下阴谋?

2 个答案:

答案 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))

enter image description here

其中

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)

enter image description here

答案 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)