R:cowplot plot_网格,在一行上居中单个图形

cfh9epnr  于 2023-02-27  发布在  其他
关注(0)|答案(2)|浏览(118)

命令plot_grid(plot1, plot2, plot3, ncol = 2)使用三个单独的绘图点plot1plot2plot3创建一个2 x 2的绘图区,其中顶行由两个绘图点组成,底行由一个绘图点组成,左对齐。因此,绘图区的右下角为空。
如何将底行的单个plot3居中,使2 x 2不会显示为缺少第四个绘图?另外,我需要plot3与其他两个绘图具有相同的大小。

    • 可复制示例**
library(ggplot2)
library(cowplot)

p1 <- ggplot(mtcars, aes(disp, mpg)) + 
    geom_point()
p2 <- ggplot(mtcars, aes(disp, mpg)) + 
    geom_point()
p3 <- ggplot(mtcars, aes(disp, mpg)) + 
    geom_point()
plot_grid(p1, p2, p3, ncol = 2) # creates 2 x 2 plot area with missing empty bottom right corner (instead of p3 centered on bottom row)
iszxjhcz

iszxjhcz1#

使用嵌套奶牛场:

library(cowplot)
library(ggplot2)
plot_grid(
  plot_grid(p1, p2, nrow = 1, ncol = 2),
  plot_grid(NULL, p3, NULL, nrow = 1, rel_widths = c(0.5, 1, 0.5)),
  nrow = 2
)

puruo6ea

puruo6ea2#

实现所需结果的一个选项是切换到patchwork,它通过wrap_plotsplot_layoutdesign参数提供了大量控制以将图放置在网格中:

library(ggplot2)
library(patchwork)

p1 <- p2 <- p3 <- ggplot(mtcars, aes(disp, mpg)) + 
  geom_point()

design <- "
AABB
#CC#
"

list(p1, p2, p3) |> 
  wrap_plots(design = design)

相关问题