在拼图主标题和剧情标题之间添加图例
Add legend between patchwork main title and plot titles
是否可以使用拼凑在 'main' 标题下方和情节标题上方添加图例?
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")
有点 hack,提取图例然后将其绘制在顶部:
# get the legend
myLegend <- cowplot::get_legend(p1 + theme(legend.position = "top"))
(cowplot::plot_grid(myLegend) / (p1 + p2)) +
plot_layout(heights = unit(c(1, 5), "cm")) +
plot_annotation(title = "main title") &
theme(legend.position = "none")
解决此问题的另一种方法是在 patchwork 中使用 guide_area 函数。指南区域用于收集所有图例,如果您对其进行编码的话。您可以像操作绘图一样操作引导区域。
在下面的示例中,我添加了一个引导区域,将其放在顶部自己的行中,然后将相对高度设置为1:10,以便引导区域占用较少space。
操作引导区的方法有很多种,您可能需要根据需要调整主题以适应不同的情况。
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")
是否可以使用拼凑在 'main' 标题下方和情节标题上方添加图例?
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")
有点 hack,提取图例然后将其绘制在顶部:
# get the legend
myLegend <- cowplot::get_legend(p1 + theme(legend.position = "top"))
(cowplot::plot_grid(myLegend) / (p1 + p2)) +
plot_layout(heights = unit(c(1, 5), "cm")) +
plot_annotation(title = "main title") &
theme(legend.position = "none")
解决此问题的另一种方法是在 patchwork 中使用 guide_area 函数。指南区域用于收集所有图例,如果您对其进行编码的话。您可以像操作绘图一样操作引导区域。
在下面的示例中,我添加了一个引导区域,将其放在顶部自己的行中,然后将相对高度设置为1:10,以便引导区域占用较少space。
操作引导区的方法有很多种,您可能需要根据需要调整主题以适应不同的情况。
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")