作者:朱微金 李陈浩

堆叠柱状图连线画法

提出问题

18年1月29日宏基因组转载了中科院生态中心邓晔组的文章《土壤细菌定量方法结合相对丰度分析揭示种群的真实变化
》。其中的图3基于堆叠柱状图,添加组间各成分连线,可以更容易的观察和比较组间的变化。如下图:

我在很多文章中也见过,一直没有学会具体的做法。这回正好身边的人会做,就问了一个作者,结果回复是origin画的,有个选项就可以添加组间连线。

现在方法是有了,不过我还是喜欢用R来画图,因为每一个细节的修改都落实的代码上,可见可重复。

而窗口操作类的软件,操作过程是不容易被记录的,别人也很难重复。

我下午将此问题放在了宏基因组0讨论群中,问是否有R包或现成的函数一句话实现在堆叠图中添加组间连线。

获取专业解答

李陈浩老师首先説写两句R就搞定。可是以我的R水平,虽然学过R in action,还只是会按帮忙使用包,修改代码的水平,很难写代码实现想法。

同时李海敏、沈伟等几位老师,也提供了众多解决方案,如ggalluvial,这个更炫酷,功能过于强大,我会在下一次分享中把中文笔记和使用心得带给大家。

到了晚上,新加坡的李陈浩老师己经将我要的需求帮助写好了,大赞。如下,我略微修改并注释:

# 绘图包、数据清洗、表格宽转长
library(ggplot2)
library(tidyverse)
library(reshape2)# 读生一个测试数据宽表格
df=data.frame(Phylum=c("Ruminococcaceae","Bacteroidaceae","Eubacteriaceae","Lachnospiraceae","Porphyromonadaceae"),GroupA=c(37.7397,31.34317,222.08827,5.08956,3.7393),GroupB=c(113.2191,94.02951,66.26481,15.26868,11.2179)
)# melt转换为长表格为ggplot2绘图通用格式
# geom_segment添加直线和曲线,arrange按门水平名称字母降序排列;cumsum先将数值累计,再用mutate取代;现在己有两组间的高度位置,再设置X轴位置1.25, 1.75, 和Y位置
ggplot(melt(df), aes(x=variable, y=value, fill=Phylum)) + geom_bar(stat = "identity", width=0.5, col='black')  + geom_segment(data=df %>% arrange(by=desc(Phylum)) %>% mutate(GroupA=cumsum(GroupA)) %>% mutate(GroupB=cumsum(GroupB)), aes(x=1.25, xend=1.75, y=GroupA, yend=GroupB))

有模板改参数我喜欢

即然有了画两组的模板,仔细读一读代码,改成三组的应该不难,代码如下:

# 画三个组间比较# 读生一个测试数据宽表格
df=data.frame(Phylum=c("Ruminococcaceae","Bacteroidaceae","Eubacteriaceae","Lachnospiraceae","Porphyromonadaceae"),GroupA=c(37.7397,31.34317,222.08827,5.08956,3.7393),GroupB=c(113.2191,94.02951,66.26481,15.26868,11.2179),GroupC=c(123.2191,94.02951,46.26481,35.26868,1.2179)
)# melt转换为长表格为ggplot2绘图通用格式
# geom_segment添加直线和曲线,arrange按门水平名称字母降序排列;cumsum先将数值累计,再用mutate取代;现在己有两组间的高度位置,再设置X轴位置1.25, 1.75, 和Y位置
ggplot(melt(df), aes(x=variable, y=value, fill=Phylum)) + geom_bar(stat = "identity", width=0.5, col='black')  + theme_classic()+geom_segment(data=df %>% arrange(by=desc(Phylum)) %>% mutate(GroupA=cumsum(GroupA)) %>% mutate(GroupB=cumsum(GroupB)), aes(x=1.25, xend=1.75, y=GroupA, yend=GroupB))+ geom_segment(data=df %>% arrange(by=desc(Phylum)) %>% mutate(GroupB=cumsum(GroupB)) %>% mutate(GroupC=cumsum(GroupC)), aes(x=2.25, xend=2.75, y=GroupB, yend=GroupC))
# 添加theme_classic()修改主题样式,这个经典主题我更喜欢
# x和xend分别为起始和终止,1,2组间X值起始分别为1.25和1.75,2,3组间则为2.25和2.75

此图比较适合展示时间序列、梯度变化有规律的连续组。因为只能连接相临的组,需要大家想好谁和谁比较很重要。对于需要全部两两比较是无法实现的。

最后感谢万能的宏基因组微信讨论群,我让认识了大家,总在我有困难时,大家无私的帮助我。谢谢你们!

希望我也能尽快成长为小牛,有更多的能力帮忙别人。

猜你喜欢

  • 热文:1高分文章 2不可或缺的人 3图表规范
  • 一文读懂:1微生物组 2寄生虫益处 3进化树
  • 必备技能:1提问 2搜索 3Endnote
  • 文献阅读 1热心肠 2SemanticScholar 3geenmedical
  • 扩增子分析:1图表解读 2分析流程 3统计绘图 4功能预测
  • 科研经验:1云笔记 2云协作 3公众号
  • 系列教程:1Biostar 2微生物组 3宏基因组
  • 生物科普 1肠道细菌 2人体上的生命 3生命大跃进 4细胞的暗战 5人体奥秘

写在后面

为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外100+ PI,1200+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍末解决群内讨论,问题不私聊,帮助同行。

学习扩增子、宏基因组科研思路和分析实战,关注“宏基因组”

点击阅读原文,跳转最新文章目录阅读
https://mp.weixin.qq.com/s/5jQspEvH5_4Xmart22gjMA

R堆叠柱状图各成分连线画法:突出展示组间物种丰度变化相关推荐

  1. 相对丰度柱状图matlab,R堆叠柱状图各成分连线画法:突出展示组间物种丰度变化...

    作者:朱微金 李陈浩 堆叠柱状图连线画法提出问题 18年1月29日宏基因组转载了中科院生态中心邓晔组的文章<土壤细菌定量方法结合相对丰度分析揭示种群的真实变化 >.其中的图3基于堆叠柱状图 ...

  2. ggplot2版聚类物种丰度堆叠图

    文章目录 写在前面 加载依赖关系 导入数据 ggtree绘制聚类树 物种组成数据 整理成facet需要的格式 保证颜色填充独立性 分面组合树和柱图 修改配色 ggtree调整布局 添加样本其他信息 树 ...

  3. R语言多层桑基图_桑基图的绘制核心微生物组分类学及丰度展示

    为什么要用桑基图 桑基图 (Sankey diagram)是一种展现数据之间流动和相互关系的图像,类似于一种网络图,通过不同层级节点之间的连接以及连接边的宽度,展示数据之间的流动关系. 在微生物群落分 ...

  4. r语言 转录本结构及丰度_桑基图的绘制核心微生物组分类学及丰度展示

    为什么要用桑基图 桑基图 (Sankey diagram)是一种展现数据之间流动和相互关系的图像,类似于一种网络图,通过不同层级节点之间的连接以及连接边的宽度,展示数据之间的流动关系. 在微生物群落分 ...

  5. 使用R语言获得16S物种丰度

    还是获得16S物种丰度得老问题,最近在一台新机器上安装qiime1,发现有报错,对于这种停止维护的软件,也是正常现象吧,于是想别的办法解决,恰巧最近读R几本R语言的入门书,发现prop.table() ...

  6. R可视化:箱线图加蜜蜂图展示组间数据分布

    介绍 数据组间分布可视化可通过boxplot再叠加蜜蜂图beeswarm,可以更为直观展示数据分布在组间的差异性. 本文旨在通过使用R代码实现上述可视化. 加载R包 可通过install.packag ...

  7. R统计绘图-随机森林分类分析及物种丰度差异检验组合图

    此文主要涉及随机森林组间变量重要性和物种丰度差异检验绘图,包含以下几部分内容: 1)随机森林分类: 2)随机森林分类变量重要性绘图: 3)物种丰度差异检验绘图 4)随机森林分类变量重要性及物种丰度差异 ...

  8. 在线作图|你不知道的绘制带聚类树的堆叠柱状图的方法

    Question1:什么是堆叠柱状图? 柱形图用来比较两个或多个的含量或者丰度(不同时间或者不同条件),只有一个变量,通常适用于于较小的数据集分析,堆叠柱形图是柱形图的变形,可以清晰地比较某一个维度数 ...

  9. 在线作图|如何绘制一个好看的堆叠柱状图

    ​Question 1:什么是堆叠柱状图? 柱形图用来比较两个或多个的含量或者丰度(不同时间或者不同条件),只有一个变量,通常适用于于较小的数据集分析,堆叠柱形图是柱形图的变形,可以清晰地比较某一个维 ...

最新文章

  1. 小知识六、CALayer动画
  2. OpenCv 金字塔之上采样与下采样
  3. [unity3d]手游资源热更新策略探讨
  4. Qt学习笔记-http服务的初步认识(使用程序下载网站上的图片)
  5. 多个Wyze 摄像头漏洞可导致攻击者接管设备并访问视频
  6. 科学精神:谈登月,关键在于讨论技术如何实现
  7. Kepware三菱驱动连接轻松开启
  8. 利用msfvenom渗透win7
  9. TCP和UDP以及IP报文格式
  10. arcgis栅格数据绘制等值线_arcgis 栅格函数之等值线
  11. hibernate 检索策略
  12. 怎么离线发布全国谷歌高清卫星影像地图瓦片
  13. linux Ubuntu 安装的搜狗双拼输入法只有五笔解决办法附安装教程
  14. 很多情侣看了以后,不在关机
  15. “No JSON object could be decoded“问题定位
  16. Angr-CTF学习笔记11-13
  17. 如何在CentOS 7上安装指定版本的PHP
  18. 快捷给UE4项目改名
  19. llvm clang esl 一些常用指令
  20. JS实现简单农场小游戏

热门文章

  1. JVM 与 Linux 的内存关系详解
  2. 14 Java面试之 IO 流技术
  3. 嵌入式系统自动使能alias
  4. 嵌入式学习笔记之XMODEM
  5. html 中设置样式方式,在html元素中设置css样式的方式是什么
  6. 49 jQuery事件
  7. 中国科学院、东南大学等联合发表最新的视觉 Transformer 综述
  8. 端到端基于图像的伪激光雷达3D目标检测
  9. 上交大博士生:博三经历5轮审稿被拒后,如今发10篇论文成为审稿人
  10. 大规模户外环境的具有地标的语义SLAM