如何在使用 ggplot2 制作的图中最小化由 patchwork 包的 guide_area() 函数创建的空白?

Posted

技术标签:

【中文标题】如何在使用 ggplot2 制作的图中最小化由 patchwork 包的 guide_area() 函数创建的空白?【英文标题】:How to minimize the white space created by the guide_area() function of the patchwork package in plots made with ggplot2? 【发布时间】:2021-11-30 17:45:31 【问题描述】:

我使用 ggplot2 包制作了 3 个图。为了在一个图中排列图,我使用了patchwork 包。在排列中,我在顶部放置了 2 个图,这些图下方的常见图例和第三图下方的常见图例。我使用guide_area() 函数创建了公共图例空间,但随之创建了一个未使用的大空白区域。

我怎样才能将这个未使用的空白空间保持在最低限度?

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")

空白区域以不同的大小和比例保留在图形中(空白区域用红色标记)。

【问题讨论】:

【参考方案1】:

plot_layout 中使用heights = ...

例如,

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

【讨论】:

以上是关于如何在使用 ggplot2 制作的图中最小化由 patchwork 包的 guide_area() 函数创建的空白?的主要内容,如果未能解决你的问题,请参考以下文章

ggplot2条形图中的顺序条

ggplot2:在图中添加p值

在堆积条形图中反转 geom_text() (ggplot2)

如何使用 ggplot2 删除 facet_wrap 图中的额外列?

如何在一个 ggplot2 图中为两个几何图层添加图例?

从使用 ggplot2 创建的多面条形图中删除重复的类别标签