R绘图系列-使用patchwork进行图形排布

这篇文章学习了使用patchwork来进行图形排布的各种基础使用。

简介

patchwork的功能和cowplot的功能比较类似,都是可以量多个ggplot对象进行排布的R包,相比于cowplotpatchwork使用更加简单,直接使用+-*/|&等即可实现多种多样的图形排布,而cowplot中还有使用plot_grid函数。


示例图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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')

library(patchwork)
p1+p2+p3+p4

patchwork_example_plots.png


简单使用

1
2
# 将p1和p2合并在一起
p1 + p2

patchwork_add_plots.png


控制layout

控制输出结果为3行,并且先按列进行填充,也就是先把第一列的3行填满,然后再去第二列:

1
p1 + p2 + p3 + p4 + plot_layout(nrow = 3, byrow = FALSE)

patchwork_layout_plots1.png


纵向合并

1
2
# 纵向合并图
p1 / p2

patchwork_stacking_plots.png

嵌套合并

1
p1 | (p2 / p3)

patchwork_stacking_nested_plots.png


添加注释

添加title

1
2
(p1 | (p2 / p3)) + 
plot_annotation(title = 'The surprising story about mtcars')

patchwork_annotating_title_plots.png

添加label

1
2
3
# tag_levels = 'A'是A、B、C的形式
p1 + p2 + p3 +
plot_annotation(tag_levels = 'I')

patchwork_annotating_label_plots.png


合并主题

使用&将同一个主题设置应用到多个子图中

1
2
3
library(patchwork)
FeaturePlot(mouse_fibro_combined, features = c("Trem2","Cd9"), pt.size=0.5, label = TRUE) &
scale_colour_gradientn(colours = c("blue","white","#d3583d"))


参考链接



-----本文结束感谢您的阅读-----

本文标题:R绘图系列-使用patchwork进行图形排布

文章作者:showteeth

发布时间:2020年04月20日 - 16:27

最后更新:2020年05月21日 - 23:15

原始链接:http://showteeth.tech/posts/60938.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%