首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R高级|利用cowplot包拼接图片(1)基本操作

R高级|利用cowplot包拼接图片(1)基本操作

作者头像
Chris生命科学小站
发布2023-02-28 19:52:58
发布2023-02-28 19:52:58
2.7K00
代码可运行
举报
运行总次数:0
代码可运行

有时候,我们想把画的几幅图拼接在一起,在R中,cowplot包提供了将图片拼在一起的方法。

cowplot最佳的适应对象是ggplot2包画的图,但是也可以画其他命令画的图,今天我们先将ggplot2画的图拼在一起。

0、安装cowplot包

代码语言:javascript
代码运行次数:0
运行
复制
install.packages('cowplot')

调用cowplot包

代码语言:javascript
代码运行次数:0
运行
复制
library(cowplot)

1、准备4幅图

先用ggplot2画4幅图:A、B、C、D

代码语言:javascript
代码运行次数:0
运行
复制
library(ggplot2)
A<- ggplot(mtcars,aes(mpg, hp)) +
    geom_point()
A
代码语言:javascript
代码运行次数:0
运行
复制
B<- ggplot(mtcars,aes(mpg)) + geom_histogram()
B
代码语言:javascript
代码运行次数:0
运行
复制
C<- ggplot(mtcars,aes(mpg)) + geom_dotplot()
C
代码语言:javascript
代码运行次数:0
运行
复制
D<- ggplot(mtcars,aes(y = mpg)) + 
    geom_boxplot(aes(fill=gear))
D

2、用plot_grid命令将这4附图拼在一起

代码语言:javascript
代码运行次数:0
运行
复制
plot_grid(A,B,C,D)

3、对齐方式

对齐的参数是align,水平对齐h(horizontally )、垂直对齐v(vertically ),同时水平和垂直对齐hv

代码语言:javascript
代码运行次数:0
运行
复制
plot_grid(A,B,C,D,align = 'h')
plot_grid(A,B,C,D,align = 'v')
plot_grid(A,B,C,D,align = 'hv')

4、指定行列数

比如,我们想把4个图片画成1行,那就将nrow设置成1

代码语言:javascript
代码运行次数:0
运行
复制
plot_grid(A,B,C,D,nrow = 1)

我们看到,第四幅图与前三幅图没有完全对齐,我们使用align='h'来设置水平对齐。

代码语言:javascript
代码运行次数:0
运行
复制
plot_grid(A,B,C,D,nrow = 1,align = 'h')

我们想把4个图片画成1列,那就将ncol设置成1

代码语言:javascript
代码运行次数:0
运行
复制
plot_grid(A,B,C,D,ncol = 1)

我们看到图片左右两边没有对齐,我们添加align='v',来设置垂直方向对齐。

代码语言:javascript
代码运行次数:0
运行
复制
plot_grid(A,B,C,D,ncol = 1,align = 'v')

5、设置图片的相对高度与相对宽度

rel_heights和rel_widths,rel的意思是relative,设置的是列或行的相对高度和相对宽度

相对高度:第1行的高度是第2行的2倍

代码语言:javascript
代码运行次数:0
运行
复制
plot_grid(A,B,C,D,rel_heights = c(2,1))

相对宽度:第1列的宽度是第2列的2倍

代码语言:javascript
代码运行次数:0
运行
复制
plot_grid(A,B,C,D,rel_widths = c(2,1))

6、添加A、B、C、D4个标签

代码语言:javascript
代码运行次数:0
运行
复制
plot_grid(A,B,C,D,
          labels = c('A','B','C','D'))

设置标签的颜色(label_colour)、位置(label_x、label_y)、字体(label_fontface、label_fontfamily)、大小(label_size)

代码语言:javascript
代码运行次数:0
运行
复制
plot_grid(A,B,C,D,
          labels = c('A','B','C','D'),
          label_colour = 'red',
          label_x = 0.01,
          label_y = 1.02,
          label_fontface = 1,
          label_size = 16)

label_fontface主要设置加粗、倾斜这些,用数字1、2、3、4---这些就行,

label_fontfamily主要设置字体的类型,比如黑体等。

当然还可以使用hjust和vjust来水平和竖直调整标签的相对位置,比如hjust=-0.5

7、设置每一个图片的大小

使用scale来设置每一个图片的大小,不是整张图片的大小

代码语言:javascript
代码运行次数:0
运行
复制
plot_grid(A,B,C,D,scale = c(0.7))

8、设置边距

边距是设置整个图片的边距,边距设置的顺序是上、右、下、左

代码语言:javascript
代码运行次数:0
运行
复制
plot_grid(A,B,C,D)+
    theme(plot.margin = unit(c(1,2,3,4), "cm"))

9、使用list把4个图片捆在一起

有时候,你需要把所有的图片都放在一起,然后做出图,那就使用list

再把对象赋值给plotlist参数

代码语言:javascript
代码运行次数:0
运行
复制
pic4=list(A,B,C,D)
plot_grid(plotlist = pic4)

10、调节图片之间的距离

下次讲------

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Chris生命科学小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档