patchwork
patchwork适合用于图数少,但需要精准控制图片排列的场景。拼图语法如下:
-
+
:最简单的拼图,默认横向排列,若有多个图,会自动计算最佳的行和列;plot_spacer()代表空白
p1 + plot_spacer() +
p2 + plot_spacer() +
p3 + plot_spacer()
-
/
:上下拼图;|
:左右拼图;用/
和|
配以()
可以实现更加复杂的拼图
(p2 / p3 ) | p1
-
plot_layout()
:控制细节
p1 + p2 + p3 + p4 +
plot_layout(widths = c(3, 1))
- 自定义拼图
layout <- "
##BBBB
AACCDD
##CCDD
"
p1 + p2 + p3 + p4 +
plot_layout(design = layout)
ggpubr::ggarrange()
ggpubr::ggarrange适合更多图的组合,可以直接指定行数和列数,默认按行排列
例如:
ggpubr::ggarrange(plotlist = list(p1,p2,p3,p1,p2,p3),nrow = 2,ncol = 3,common.legend = T)
aplot::insert_*
这个函数族包括aplot::insert_bottom()
、aplot::insert_left()
、aplot::insert_right()
、aplot::insert_top()
。我通常用于单张复杂图的绘制。但缺点是返回的对象不是ggplot对象,进行后续操作会比较麻烦。
p1 %>% insert_top(p2,height = 0.2) %>% insert_right(p3,0.2)