【问题标题】:Arrange three plots of the same size on two rows in ggplot2在ggplot2中的两行上排列三个相同大小的图
【发布时间】:2019-02-02 16:37:02
【问题描述】:

我正在尝试在 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 命令一起使用,但这根本不起作用!

有没有人知道如何让下图居中?

【问题讨论】:

    标签: r ggplot2


    【解决方案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)
    

    【讨论】:

    • 非常感谢,第二种解决方案正是我一直在寻找的!我不想像第一个解决方案那样拉伸第三个图。我想我之前在矩阵上犯了一个错误,但我很高兴我现在知道如何正确使用 grid.arrange! :)
    【解决方案2】:

    这是一个使用允许标签的 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)
    

    【讨论】:

      猜你喜欢
      • 2013-05-06
      • 1970-01-01
      • 2014-12-02
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 1970-01-01
      相关资源
      最近更新 更多