如何将嵌套的 plot_grid 缩放到相同的大小?

Dan*_* C. 3 layout plot r ggplot2 cowplot

我有 7 个图,我将它们组织成 2 列,一个有 3 个图,另一个有 4 个图。我曾经plot_gridcowplot该。结果几乎是完美的,但是,具有 3 个图的列具有更大的图。如何缩放此列以在所有图中获得相同的大小并对齐每列的第一个和最后一个图?

library(ggplot2)
library(cowplot)

Value <- seq(0,1000, by = 1000/10)
Index <- 0:10
DF <- data.frame(Index, Value)

plot1 <- ggplot(DF, aes(x = Index, y = Value)) +
  geom_line(linetype = 2) +
  theme(aspect.ratio = 0.5)

plot2 <- ggplot(DF, aes(x = Index, y = Value)) +
  geom_line(linetype = 2) +
  theme(aspect.ratio = 0.5)

plot3 <- ggplot(DF, aes(x = Index, y = Value)) +
  geom_line(linetype = 2) +
  theme(aspect.ratio = 0.5)

plot4 <- ggplot(DF, aes(x = Index, y = Value)) +
  geom_line(linetype = 2) +
  theme(aspect.ratio = 0.5)

plot5 <- ggplot(DF, aes(x = Index, y = Value)) +
  geom_line(linetype = 2) +
  theme(aspect.ratio = 0.5)

plot6 <- ggplot(DF, aes(x = Index, y = Value)) +
  geom_line(linetype = 2) +
  theme(aspect.ratio = 0.5)

plot7 <- ggplot(DF, aes(x = Index, y = Value)) +
  geom_line(linetype = 2) +
  theme(aspect.ratio = 0.5)

col1 <- plot_grid(plot1, plot2, plot3, align = "v", ncol = 1)
col2 <- plot_grid(plot4, plot5, plot6, plot7, align = "v", ncol = 1)
plot_grid(col1, col2, ncol = 2, align = "hv")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Cla*_*lke 5

您可以在第一列中放置一个空图:

col1 <- plot_grid(plot1, plot2, plot3, NULL, align = "v", ncol = 1)
Run Code Online (Sandbox Code Playgroud)

但是,对我来说,这不是嵌套绘图网格的情况。嵌套绘图网格专门用于组合具有复杂排列的绘图,例如,一列中的一个绘图跨越另一列中的两行。对于你想要的,我会打一个plot_grid()电话,就像其他评论建议的那样:

plot_grid(plot1, plot4, plot2, plot5, plot3, plot6, NULL, plot7,
          ncol = 2, align = "hv")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

另请注意,align当您指定特定的纵横比时,该选项不起作用。您可以指定纵横比或对齐。在大多数情况下,没有必要指定纵横比,您可以在保存图形时指定。该功能save_plot()特别采用纵横比选项(适用于整个图像,但不是绘图区域)。