使用拼凑将组合子图(拼凑?)注释为单个图

Lut*_*ett 3 graphics plot r ggplot2 patchwork

我试图弄清楚如何注释组合拼凑物,就好像它们是单独的图一样。

我有一个由三个组合图和另一个单个图组成的拼凑而成。最终的复合图是顶部的第一个拼凑物和底部的单独图。我可以毫无问题地获得我想要的布局,但是当我使用 时plot_annotation,它会为每个图提供字母,而我想看到的是顶部图(三个子图拼凑而成)的 A 和底部图的 B (只是一个情节)

这是我目前正在做的事情:

library(ggplot2)
library(patchwork)

p1 <- ggplot(mtcars) + 
  geom_point(aes(mpg, disp)) + 
  ggtitle('Plot 1')

p2 <- ggplot(mtcars) + 
  geom_boxplot(aes(gear, disp, group = gear)) + 
  ggtitle('Plot 2')

p3 <- ggplot(mtcars) + 
  geom_point(aes(hp, wt, colour = mpg)) + 
  ggtitle('Plot 3')

p4 <- ggplot(mtcars) + 
  geom_bar(aes(gear)) + 
  facet_wrap(~cyl) + 
  ggtitle('Plot 4')

top_plot = (p1 + p2 + p3)
bottom_plot = p4
combined_plot <- (top_plot / bottom_plot) + plot_annotation(tag_levels="A")
combined_plot
Run Code Online (Sandbox Code Playgroud)

我希望看到的不是 AD 注释,而是顶部图(图 1-3)的 A 和底部图(图 4)的 B。有没有办法做到这一点?

All*_*ron 7

一种解决方案是创建两个完整的拼凑图,每个图都有自己的注释。您必须将它们分别放入其中wrap_elements以将它们声明为完整的拼凑件才能起作用。此后,您可以像组合 ggplots 一样组合它们:

# Set theme for annotations
thm <- theme(plot.title = element_text(face = 2, size = 16))

top_plot      <- wrap_elements((p1 + p2 + p3) + 
                                 plot_annotation(title = "A", theme = thm))
bottom_plot   <- wrap_elements(p4 + plot_annotation(title = "B", theme = thm))

top_plot / bottom_plot
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述