下面实例搬运自patchwork官网:
https://patchwork.data-imaginist.com/articles/patchwork.html
library(ggplot2)
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')
上面使用内置数据,独立画出来4张图。下面看,怎么去拼接。
基本用法
p1 + p2
+带来的结果是左右拼接
当将plot添加在一起时,最后添加的plot将是活动的plot,并且将接收任何新的ggplot2对象的添加,例如gem, labels等:
p1 + p2 + labs(subtitle = 'This will appear in the last plot')
布局
默认情况下,patchwork将尝试保持网格正方形,并按行顺序填充。
p1 + p2 + p3 + p4
可以使用plot_layout()进行调整
p1 + p2 + p3 + p4 + plot_layout(nrow = 3, byrow = FALSE)
组合使用| /
p1 / p2
p1 | (p2 / p3)
添加注释
(p1 | (p2 / p3)) +
plot_annotation(title = 'The surprising story about mtcars')
可以给每个图添加小标题
p1 + p2 + p3 +
plot_annotation(tag_levels = 'I')