R海拾遗-图片拼接

2020-09-15 15:37:12 浏览数 (1)

R图片拼接

sunqi
2020/7/16

1. 概述

对于ggplot,不支持将多个图片拼接的操作,因此绝大多数的人使用ps或者ppt进行拼接图片,包括我,现在可以使用软件包来完成

安装包:patchwork

patchwork的作用是将不同的ggplot组合到同一个图形中。

2. 安装

代码语言:javascript复制
# devtools::install_github("thomasp85/patchwork")
# 或者采用镜像
if(F){
  install.packages("patchwork")
}

3. 正文

代码语言:javascript复制
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
代码语言:javascript复制
## 拼接图片后,作为一个新的绘图单元,可以添加ggplot2的元素
p1   p2   labs(subtitle = 'This will appear in the last plot')
代码语言:javascript复制
# 默认情况下,patchwork将尝试保持网格是正方形的,并按行顺序填写

p1   p2   p3   p4
代码语言:javascript复制
## 但是同时也支持页面布局调整
p1   p2   p3   p4   plot_layout(nrow = 3, byrow = FALSE)
代码语言:javascript复制
## 使用/布局
p1 / p2
代码语言:javascript复制
## 更复杂的布局
p1 | (p2 / p3)
代码语言:javascript复制
## 对图片添加注释
(p1 | (p2 / p3))  
  plot_annotation(title = 'The surprising story about mtcars')
代码语言:javascript复制
## 自动添加图的序号

p1   p2   p3  
  plot_annotation(tag_levels = 'A')

## 4.额外的包ggpubr

同时在浏览patchwork包中,其实很多包能够完成这些操作,比较简单的是ggpubr

代码语言:javascript复制
library(ggpubr)
# 基础拼接
ggarrange(p1,p2,p3,p4,ncol=2,nrow=2,labels=c("A","B","C","D"))
代码语言:javascript复制
##嵌套拼接
ggarrange(p2,ggarrange(p1,p3,ncol=2,labels=c("B","C")),nrow=2,labels="A")

5.结束语

对于patchwork来说,这只是一个简单的开始,当然里面还有很多的参数可以修改,达到自己修图的目的,对于ggpubr来说拼图只是它的一个功能,其他绘图功能也比较出众,后面想起来就更一下。另外关于meta分析,想写一个专题,但是感觉我又用不到,就说这么多吧。

love&peace

0 人点赞