我正在尝试弄清楚如何注释组合的拼凑作品,就好像它们是单独的图一样。
我有一个拼凑而成的作品,由三个组合地块和另一个单一地块组成。最终的复合图是顶部的第一个拼凑物和底部的单独图。我可以毫无问题地获得我想要的布局,但是当我使用
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
我希望看到的不是 A-D 注释,而是顶部图(图 1-3)的 A 和底部图(图 4)的 B。有办法做到这一点吗?
一种解决方案是创建两个完整的拼凑图,每个图都有自己的注释。您必须将它们分别放入
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
另一种选择是,当您想“跳过”枚举时,将
... + plot_layout(tag_level = 'new')
与绘图一起使用(最初发布在此 github issue 中)。
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') +
plot_layout(tag_level = 'new')
p3 <- ggplot(mtcars) +
geom_point(aes(hp, wt, colour = mpg)) +
ggtitle('Plot 3') +
plot_layout(tag_level = 'new')
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
我在这里添加这个解决方案是因为在某些情况下
wrap_elements
会扭曲我的图的面板(不知道为什么),所以艾伦的解决方案对我来说不太有效。