科研作图/科研文章为了节省版面,我们通常会将多张图片合成一张图,本次分享将向大家展示如何使用R语言进行图形组合。早已闻cowplot大名,但是不知道它的具体目标是什么,本文也会对其重点介绍。
《目录》
【1】函数par( ) 【2】函数layout( ) 【3】cowplot包3.1 ggplot2绘图中的基础组合图
3.2 加上水印文字
3.3 插入子图 draw_plot()函数
3.4 添加背景图/Logo
【4】组合图进阶版
![80afb66c0c5ed6a3699c47ff0cffd89f.gif](https://img-blog.csdnimg.cn/img_convert/80afb66c0c5ed6a3699c47ff0cffd89f.gif)
1.函数par( )
在使用函数par( )时, 你需要添加参数mfrow=c(n, m) 去创建一个n行m列的画布,画布中的每一格可以放一张图片,此时图片是按照行排列的。如果你想按照列排列,则需要改用参数mfcol=c(n, m)。
使用mtcars数据集作为示例:
1
![e341e2e0f315debd8da610458a275218.png](https://img-blog.csdnimg.cn/img_convert/e341e2e0f315debd8da610458a275218.png)
![80afb66c0c5ed6a3699c47ff0cffd89f.gif](https://img-blog.csdnimg.cn/img_convert/80afb66c0c5ed6a3699c47ff0cffd89f.gif)
2.函数layout( )
使用函数layout(mat)合并图片时需要注意其参数mat是一个矩阵,主要是用于指定单个图片的位置:
画布第一行包含一张图片,而第二行包含两张图片;另外,我们可以通过参数widths= 和 heights= 来更精准地控制每张图片的尺寸,其中widths= 代表的是每一列的宽度,heights= 代表的是每一行的高度:
1
![a388af083d4ed1cbfad31fa6c230b136.png](https://img-blog.csdnimg.cn/img_convert/a388af083d4ed1cbfad31fa6c230b136.png)
![80afb66c0c5ed6a3699c47ff0cffd89f.gif](https://img-blog.csdnimg.cn/img_convert/80afb66c0c5ed6a3699c47ff0cffd89f.gif)
3.cowplot包
高级作图基本不会使用plot,而是选择ggplot2或者其他工具包,在ggplot2中,想要拼接两个用ggplot绘制的图像是很难的。
cowplot是ggplot2包的一个简单插件,它的目的是为ggplot2提供一个出版级别的主题,使用少量代码即可实现主题统一的修改,如轴标签大小、画图背景。
cowplot包的官网在https://wilkelab.org/cowplot/index.html
源代码在github: https://github.com/wilkelab/cowplot
3.1 ggplot2绘图中的基础组合图
1library(ggplot2)
![fa291cf889df4ad032ab630869108c83.png](https://img-blog.csdnimg.cn/img_convert/fa291cf889df4ad032ab630869108c83.png)
另外plot_grid()函数与save_plot()函数组合使用效果是非常好的。
比如你想要生成一个2x2的图形,我们可能想要使用下面的代码:
1plot2by2 NULL,
![72f7940f1be05b0d5380177bf86f1faf.png](https://img-blog.csdnimg.cn/img_convert/72f7940f1be05b0d5380177bf86f1faf.png)
3.2 加上水印文字
1p
![467c095cad63c23e0020da78bc65cd83.png](https://img-blog.csdnimg.cn/img_convert/467c095cad63c23e0020da78bc65cd83.png)
把水印文字放下面,并使用cowplot主题函数theme_half_open()去除网格线(使用
ggplot2的theme_classic()会将水印放在图下一层)
1
3.3 插入子图 draw_plot()函数
1#插入ggplot2的图
![a2bf3d5af960225e10de17da4db7afec.png](https://img-blog.csdnimg.cn/img_convert/a2bf3d5af960225e10de17da4db7afec.png)
除了可以插入ggplot2做的图为子图外,还可以插入基本函数的绘图
1
![2cfb96747713b95499d611701b7e1e7f.png](https://img-blog.csdnimg.cn/img_convert/2cfb96747713b95499d611701b7e1e7f.png)
3.4 添加背景图/Logo
1
![3a37cd22f2d5ab294f07257f889c248b.png](https://img-blog.csdnimg.cn/img_convert/3a37cd22f2d5ab294f07257f889c248b.png)
添加Logo
1logo_file
![f077882eb0701624cf268aedc31fbda0.png](https://img-blog.csdnimg.cn/img_convert/f077882eb0701624cf268aedc31fbda0.png)
![80afb66c0c5ed6a3699c47ff0cffd89f.gif](https://img-blog.csdnimg.cn/img_convert/80afb66c0c5ed6a3699c47ff0cffd89f.gif)
4.组合图进阶版
三个图组合+共享图例:
1
![6f72a5c4d99939130fccaaca7d9f3750.png](https://img-blog.csdnimg.cn/img_convert/6f72a5c4d99939130fccaaca7d9f3750.png)
参考资料:
1. 牛图cowplot究竟想干啥?https://zhuanlan.zhihu.com/p/135246567
2. R语言进阶之图形的合并 https://zhuanlan.zhihu.com/p/258775613
3. R语言COWPLOT介绍——把不同的图像拼接到一起 https://www.freesion.com/article/7352310716/
2. cowplot官网:https://wilkelab.org/cowplot/index.html
欢迎大家继续关注猪脑子学术哟,我们共同进步!
![1453b4b8a987202ee1e64d2ea4be8719.gif](https://img-blog.csdnimg.cn/img_convert/1453b4b8a987202ee1e64d2ea4be8719.gif)
![1453b4b8a987202ee1e64d2ea4be8719.gif](https://img-blog.csdnimg.cn/img_convert/1453b4b8a987202ee1e64d2ea4be8719.gif)
![5e7f10acff6297e39d8996eb0ff8c5b2.png](https://img-blog.csdnimg.cn/img_convert/5e7f10acff6297e39d8996eb0ff8c5b2.png)
![1453b4b8a987202ee1e64d2ea4be8719.gif](https://img-blog.csdnimg.cn/img_convert/1453b4b8a987202ee1e64d2ea4be8719.gif)
![1453b4b8a987202ee1e64d2ea4be8719.gif](https://img-blog.csdnimg.cn/img_convert/1453b4b8a987202ee1e64d2ea4be8719.gif)
扫二维码|关注我们
主编|星空
审核|一辆车一条gai 314