Patchwork 是一个非常流行的用于拼接 ggplot2 图形的包。它提供了一种类似四则运算的方法来拼接图形,非常易于使用,是拼接 ggplot2 图形的首选工具。
首先,我们使用 ggplot2 包中的 mtcars 数据集来创建四个示例图形:
library(ggplot2)
library(patchwork)
p1 <- ggplot(mpg) +
geom_point(aes(x = displ, y = hwy)) +
ggtitle("Plot 1")
p2 <- ggplot(mpg) +
geom_bar(aes(x = as.character(year), fill = drv), position = "dodge") +
labs(x = "year") +
ggtitle("Plot 2")
p3 <- ggplot(mpg) +
geom_density(aes(x = hwy, fill = drv), colour = NA) +
facet_grid(rows = vars(drv)) +
ggtitle("Plot 3")
p4 <- ggplot(mpg) +
stat_summary(aes(x = drv, y = hwy, fill = drv), geom = "col", fun.data = mean_se) +
stat_summary(aes(x = drv, y = hwy), geom = "errorbar", fun.data = mean_se, width = 0.5) +
ggtitle("Plot 4")
接下来,通过实例演示如何用 Patchwork 将这些图形拼接在一起。
+
拼图:p1 + p2
|
拼图p1 | p2
/
拼图p1 / p2
(p1 | p2) / p3
Patchwork 包提供了几个函数来控制组合图形的布局。
p1 + p2 + p3 + p4
p1 + p2 + p3 + p4 + plot_layout(nrow = 3, byrow = FALSE)
wrap_plots(list(p1, p2, p3, p4), ncol = 2)
p1 + p2 + plot_spacer() + p4
p1 + inset_element(p2, left = 0.5, bottom = 0.5, right = 0.95, top = 0.95)
p1 + p2 & theme_bw()
p1 + p2 + labs(subtitle = 'This will appear in the last plot')
(p1 | (p2 / p3)) +
plot_annotation(title = 'Title: show plot_annotation of patchwork')
可以看到,Patchwork 提供了多个拼图符号、布局控制和注释选项。这使得 Patchwork 拼接 ggplot2 图形非常方便和强大。