对于ggplot,不支持将多个图片拼接的操作,因此绝大多数的人使用ps或者ppt进行拼接图片,包括我,现在可以使用软件包来完成
安装包:patchwork
patchwork的作用是将不同的ggplot组合到同一个图形中。
# devtools::install_github("thomasp85/patchwork")
# 或者采用镜像
if(F){
install.packages("patchwork")
}
library(patchwork)
# 开始
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')
## 使用加号拼接图片
p1 + p2
## 拼接图片后,作为一个新的绘图单元,可以添加ggplot2的元素
p1 + p2 + labs(subtitle = 'This will appear in the last plot')
# 默认情况下,patchwork将尝试保持网格是正方形的,并按行顺序填写
p1 + p2 + p3 + p4
## 但是同时也支持页面布局调整
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 = 'A')
## 4.额外的包ggpubr
同时在浏览patchwork包中,其实很多包能够完成这些操作,比较简单的是ggpubr
library(ggpubr)
# 基础拼接
ggarrange(p1,p2,p3,p4,ncol=2,nrow=2,labels=c("A","B","C","D"))
##嵌套拼接
ggarrange(p2,ggarrange(p1,p3,ncol=2,labels=c("B","C")),nrow=2,labels="A")
对于patchwork来说,这只是一个简单的开始,当然里面还有很多的参数可以修改,达到自己修图的目的,对于ggpubr来说拼图只是它的一个功能,其他绘图功能也比较出众,后面想起来就更一下。另外关于meta分析,想写一个专题,但是感觉我又用不到,就说这么多吧。
love&peace