如何最小化由 ggplot2 绘制的 patchwork 包的 guide_area() 函数创建的白色 space?

How to minimize the white space created by the guide_area() function of the patchwork package in plots made with ggplot2?

我用 ggplot2 包制作了 3 个地块。为了在单个图中排列图,我使用了 patchwork 包。在安排中,我在顶部放置了 2 个地块,这些地块下方的共同图例和第三个地块的共同图例下方。我用 guide_area() 函数创建了通用图例 space,但是随之创建了一大片未使用的空白区域。

如何将未使用的空白 space 保持在最低限度?

library(ggplot2)
library(patchwork)

p1 <- ggplot(data = mpg,
             aes(x = fl,
                 y = displ)) +
  geom_col(aes(fill = cty))

p2 <- ggplot(data = mpg,
             aes(x = year,
                 y = hwy)) +
  geom_point(aes(color = drv))

p3 <- ggplot(data = mpg,
             aes(x = class,
                 y = displ)) +
  geom_col() +
  facet_grid(~year)

((p1+p2)/guide_area()/p3) +
  plot_layout(guides = "collect") &
  theme(legend.position = "bottom")

白色space保留在不同尺寸和比例的图形中(白色space用红色标记)。

plot_layout内使用heights = ...

例如,

((p1+p2)/guide_area()/p3) +
  plot_layout(guides = "collect", heights = c(3,1,3)) &
  theme(legend.position = "bottom")