感谢“宏基因组0”群友李海敏、沈伟推荐此包绘制堆叠柱状图各成分连线:突出展示组间物种丰度变化。
冲击图(alluvial diagram)是流程图(flow diagram)的一种,最初开发用于代表网络结构的时间变化。
实例1. neuroscience coalesced from other related disciplines to form its own field. From PLoS ONE 5(1): e8694 (2010)
ggalluvial是一个基于ggplot2的扩展包,专门用于快速绘制冲击图(alluvial diagram),有些人也叫它桑基图(Sankey diagram),但两者略有区别,将来我们会介绍包绘制桑基图。
软件源代码位于Github: https://github.com/corybrunson/ggalluvial
CRNA官方演示教程: https://cran.r-project.org/web/packages/ggalluvial/vignettes/ggalluvial.html
安装
以下三种方装方式,三选1:
显示帮助文档
使用vignette查看演示教程
接下来我们的演示均基于此官方演示教程,我的主要贡献是翻译与代码注释。
基于ggplot2的冲击图
原作者:Jason Cory Brunson, 更新日期:2018-02-11
1. 最简单的示例
基于泰坦尼克事件人员统计绘制性别与舱位和年龄的关系。
具体参考说明:data设置数据源,axis设置显示的柱,weight为数值,geom_alluvium为冲击图组间面积连接并按生存率比填充分组,geom_stratum()每种有柱状图,geom_text()显示柱状图中标签,theme_minimal()主题样式的一种,ggtitle()设置图标题
图1. 展示性别与舱位和年龄的关系及存活率比例
我们发现上图居然画的是宽表格模式下的数据,而通常ggplot2处理都是长表格模式,如何转换呢?
to_loades转换为长表格
产生和上图一样的图,只是数据源格式不同。
2. 输入数据格式
定义一种Alluvial宽表格
查看性别与专业间关系,并按录取情况分组
3. 三类型间关系,按重点着色
Titanic按生存,性别,舱位分类查看关系,并按舱位填充色
4. 长表格数据
主要列说明:
x, 主要的分类,即X轴上每个柱
stratum, 主要分类中的分组
alluvium, 连接图的索引
5. 绘制非等高冲击图
以各国难民数据为例,观察多国难民数量随时间变化
6. 等高非等量关系
不同学期学生学习科目的变化
7. 工作状态时间变化图
8. 分类学门水平相对丰度实战
绘制分组对应的分类学,有点像circos
组间各丰度变化,如果组为时间效果更好
Reference
Jason Cory Brunson (2017). ggalluvial: Alluvial Diagrams in ‘ggplot2’. R package version 0.5.0.
https://CRAN.R-project.org/package=ggalluvial
https://en.wikipedia.org/wiki/Alluvial_diagram
ggalluvial包源码:http://corybrunson.github.io/ggalluvial/index.html
官方示例 Alluvial Diagrams in ggplot2 https://cran.r-project.org/web/packages/ggalluvial/vignettes/ggalluvial.html
领取专属 10元无门槛券
私享最新 技术干货