ggplot2 图形排版:patchwork 包复杂排版
前面我们学习了 patchwork 包排版 ggplot2 图形的简单入门,今天来学习下 patchwork 包的复杂排版。
1. 安装和加载包
install.packages("ggplot2") # 安装包install.packages("patchwork") # 安装包library(ggplot2) # 加载包library(patchwork) # 加载包
2. 绘制示例图形
绘制四个 ggplot2 示例图形用于演示排版。
p1 <- ggplot(mtcars, aes(x=mpg, y=wt)) + geom_point() +ggtitle('图1') p2 <- ggplot(mtcars, aes(x=mpg, y=disp, group = gear)) + geom_boxplot() + ggtitle('图2')p3 <- ggplot(mtcars, aes(x=hp, y=wt, colour = mpg)) + geom_point() + ggtitle('图3')p4 <- ggplot(mtcars, aes(x=gear)) + geom_bar() + ggtitle('图4') + facet_wrap(~cyl)
p1 + p2 + p3 + p4
3. 图形排版进阶
下面我们来学习下通过调整参数来进行复杂的排版。
patchwork包 中用来调整排版设置的函数有 plot_annotation()函数 、 plot_layout() 函数、 plot_spacer() 函数 等,下面一个一个看。
3.1 plot_annotation() 函数
查看此函数帮助文件,可以看到这个函数主要的作用在于给组合图形添加标签和标题等。
下面来学习怎么使用这个函数。
函数使用比较简单,直接在组合图形后面使用+号连接该函数即可,代码如下:
p1 + p2 + p3 + p4 + plot_annotation(tag_levels = "A", title = "组合图形排版", caption = "R语言统计与绘图 公众号")
如上图所示,可以使用 title、subtitle、caption 等参数来控制图形标题和副标题等。
使用 tag_levels 参数表示添加图形的标签,可以指定水平值为 a、A、1、i、I 等,分别表示小写字母、大写字母、数字、小写罗马数字、大写罗马数字等。
3.2 plot_layout() 函数排版
上面的 plot_annotation() 函数是用于添加组合图形的标签、标题等。
而 plot_layout() 函数可以用于组合图形的布局。
下面来学习怎么使用这个函数。
p1 + p2 + p3 + p4 + plot_layout(ncol = 2, widths = c(1, 2))
如上所示,图形设置为两列,默认按行填充,两列之间 相对宽度比 为 1:2。
当然也可以设置 heights 参数为 相对高度比 1:2,代码如下。
p1 + p2 + p3 + p4 + plot_layout(heights = c(1, 2))
除了使用 ncol、nrow、widths、heights 等参数来调整排版外,还可以使用 design 参数来排版图形,这个更加复杂,自定义程度也更高。
design 参数接受 文本字符串 来指定图形布局。
design1 <- " 122 1#3 443"p1 + p2 + p3 + p4 + plot_layout(design = design1)
上面的 design1 表示将图形画板创建为9宫格布局,图1为在第1和4格,图2在第2和3格,图3在第6和9格,图4在7和8格,第5格是空的,用#号表示。
除了设置排版布局外,还可以使用 guides 参数来设置图形的图例。
在4个示例数据集中,图3是有图例的,那就用图3来演示图例的设置。
p3 + p3
如上图所示,组合图形有两个图例,我们可以调整参数将其合并为1个图例。
设置参数 guides='collect' 即可。
p3 + p3 + plot_layout(guides='collect')
也可以设置参数调整图例的位置,比如说置于底部。
p3 + p3 + plot_layout(guides='collect') & theme(legend.position='bottom')
3.3 plot_spacer() 函数排版
这个函数的目的就是在排版网格中创建一个空的透明色块,用来隔开其他图形。
下面来看看这个函数的使用。
首先先看下没有添加 plot_spacer() 函数的图形排版。
p1 + p2 + p3
添加 plot_spacer() 函数。
p1 + p2 + plot_spacer() + p3
如图所示,plot_spacer() 函数就是在前后图形中创建一个空的透明网格,可以提高自定义排版的自由度。
p1 + plot_spacer() + p2 + plot_spacer() + p3 + plot_spacer()
4. 调整图形主题
除了设置排版布局外,还可以设置图形主题。
比如说设置 theme_bw() 主题,直接在组合图形后面用 & 符号连接起来即可。
p1 + p2 + p3 + p4 & theme_bw()
好的,patchwork 包就学到这里,应该基本够用了。
对这个包有兴趣的读者可以点击 阅读原文 查看更复杂的自定义排版。
参考资料
- patchwork 包帮助文件
既往专辑
本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。
ggplot2 图形排版:patchwork 包复杂排版相关推荐
- R语言ggplot2可视化:使用patchwork包将两个ggplot2可视化结果图像垂直堆叠排列进行组合构图(vertically stack the plots)
R语言ggplot2可视化:使用patchwork包将两个ggplot2可视化结果图像垂直堆叠排列进行组合构图(vertically stack the plots) 目录
- R语言ggplot2可视化:patchwork包(直接使用加号+)将一个ggplot2可视化结果和一段文本内容横向组合起来形成最终结果图、使用wrap_elements函数将文本内容放置在组合组左边
R语言ggplot2可视化:使用patchwork包(直接使用加号+)将一个ggplot2可视化结果和一段文本内容横向组合起来形成最终结果图.使用wrap_elements函数将文本内容放置在组合组左 ...
- R语言ggplot2可视化:patchwork包将一个ggplot2可视化结果和一个plot函数可视化结果横向组合起来形成最终结果图、两个可视化的组合结果对齐、并为组合图像的每个子图添加标题
R语言ggplot2可视化:使用patchwork包(直接使用加号+)将一个ggplot2可视化结果和一个plot函数可视化结果横向组合起来形成最终结果图.将两个可视化的组合结果对齐.并为组合图像的每 ...
- ggplot2 图形排版:patchwork 包简单入门
在前面我们学习了基础绘图系统和 ggplot2 绘图系统的图形排版组合,具体可见下面推文. 1. 基础绘图系统组合图形排版 2. ggplot2绘图系统图形排版 今天我们继续来学习下 patchwor ...
- ggplot2图形排版:patchwork包简单入门
看下patchwork包介绍:主要供ggplot2用户使用,无论组合图形多么复杂,确保ggplot图形对齐. install.packages("patchwork") insta ...
- AE PR模板基本图形预设素材包动态字幕文字标题排版动画预设效果
AE PR模板基本图形预设素材包动态字幕文字标题排版动画预设效果 素材名称:AE模板+PR预设文字标题排版字幕动画 素材数量:AE890组+PR940组 PR不支持改字体 AE支持改字体 使用软 ...
- R语言ggplot2可视化:使用patchwork包绘制ggplot2可视化结果的组合图(自定义图像的嵌入关系)、使用patchwork包绘制ggplot2可视化结果的组合图(自定义组合形式)
R语言ggplot2可视化:使用patchwork包绘制ggplot2可视化结果的组合图(自定义图像的嵌入关系).使用patchwork包绘制ggplot2可视化结果的组合图(自定义组合形式) 目录
- R语言ggplot2可视化使用ggplot2包patchwork包在可视化结果(右上角)中插入logo图片
R语言ggplot2可视化使用ggplot2包patchwork包在可视化结果(右上角)中插入logo图片 目录
- R语言ggplot2可视化为组合图添加综合图例实战:使用ggpubr包ggarrange函数实现综合图例、使用patchwork包实现综合图例
R语言ggplot2可视化为组合图添加综合图例实战:使用ggpubr包ggarrange函数实现综合图例.使用patchwork包实现综合图例 目录
最新文章
- VTK修炼之道55:图形基本操作进阶_表面重建技术(等值面提取)
- 定位到某个单词_【侃侃单词】词根词缀记单词-loc
- 201671010439-词频统计软件项目报告
- VS2010打开就自动关闭问题解决
- 易语言精益模块json_精易模块|精易模块下载 v3.46 官方免费版_最火软件站
- w10连接远程计算机控制,win10系统教你如何远程控制他人电脑的方法
- 十三、直接、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址
- 电脑系统里如何设置dns服务器
- Android 软件行为监控系统 的原理 主要是利用binder机制原理添加一个filter
- 这几种神级性能优化手段,你用过几个?
- AngularJs - Javascript MVC 框架
- 【资源】重磅!清华大学网上课程面向全国免费开放!无需登录、注册!在家上清华!...
- ubuntu下查看电脑系统信息
- Win7电脑CPU占用过高怎么办?
- 融汇悦生活赴港递交招股书:母公司依赖症难解,独立性存疑
- HTML5期末考核大作业:基于Html+Css+javascript的网页制作(化妆品公司网站制作)...
- 【深度学习入门】——亲手实现图像卷积操作
- 使用PageHelper实现分页
- Creating Shazam in Java
- 【亲测有效】Centos安装完成docker后启动docker报错docker: unrecognized service的两种解决方案...