在拼凑的主标题和情节标题之间添加图例

det*_*det 7 r ggplot2 patchwork

是否可以使用拼接在“主”标题下方和情节标题上方添加图例?

library(ggplot2)
library(patchwork)

p1 <- ggplot(mtcars, aes(disp, wt, color = factor(gear))) + 
    geom_point() + 
    labs(title = "first plot title")
p2 <- ggplot(mtcars, aes(drat, qsec, color = factor(gear))) + 
    geom_point() + 
    labs(title = "second plot title")

(p1+p2) + 
    plot_layout(guides = "collect") + 
    plot_annotation(title = "main title") & 
    theme(legend.position = "top")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

way*_*e r 5

解决此问题的另一种方法是使用patchwork 中的guide_area函数。如果您对其进行编码,则指南区域用于收集所有图例。您可以像操作绘图一样操作引导区域。

在下面的示例中,我添加了一个引导区域,将其放置在顶部自己的行中,然后将相对高度设置为 1:10,以便引导区域占用更少的空间。

操作引导区域的方法有很多种,您可能需要根据需要调整主题以适应不同的情况。

p1 <- ggplot(mtcars, aes(disp, wt, color = factor(gear))) + 
  geom_point() + 
  labs(title = "first plot title")

p2 <- ggplot(mtcars, aes(drat, qsec, color = factor(gear))) + 
  geom_point() + 
  labs(title = "second plot title")

guide_area() + (p1+p2) + 
  plot_layout(guides = "collect", 
              nrow = 2, heights = c(1,10)) + 
  plot_annotation(title = "main title") & 
  theme(legend.position = "top")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述