为什么要用桑基图

桑基图 (Sankey diagram)是一种展现数据之间流动和相互关系的图像,类似于一种网络图,通过不同层级节点之间的连接以及连接边的宽度,展示数据之间的流动关系。

在微生物群落分析中,桑基图可以用来展示不同分类学水平微生物的丰度及其从属关系,可以简单的说是一种包含物种丰度信息的系统发育树。

在一些时间序列或大规模区域样本的研究中,研究人员通常都会非常关注核心微生物组,也就是在一系列时间序列样品或各种不同类型样品中共有的微生物,这些微生物代表了样本中最基本也是最重要的功能微生物。

使用桑基图可以达到同时展示核心微生物组成、系统发育关系以及相对丰度的目的

桑基图的绘制

可以使用R语言的“d3Network”包进行桑基图的绘制,该包是在R环境下基于D3.j绘制桑基图的专门的包。

还是照例先介绍一下绘图主函数的各项参数。

d3Sankey(Links, Nodes, Source, Target, Value = NULL, NodeID, height = 600,  width = 900, fontsize = 7, nodeWidth = 15, nodePadding = 10,  parentElement = "body", standAlone = TRUE, file = NULL,  iframe = FALSE, d3Script = "http://d3js.org/d3.v3.min.js")

各参数意义:

  • Links,用于绘图的数据框,给出了节点及其关联信息;

  • Nodes,包含节点ID及相关信息的数据框;

  • Source,Links文件中指定Source源的向量;

  • Target,Links文件中指定Target的向量;

  • Value,Links文件中指定节点关联边宽度的向量;

  • NodeID,Nodes文件中指定节点ID名称的向量;

  • height,输出图像的高度;

  • width,输出图像的宽度;

  • fontsize,图像中节点标签文字的字号;

  • nodeWidth,用于指定每一个节点的宽度;

  • nodePadding,介绍里的英语没看明白是什么意思;

  • file,输出文件的名称,要输出html格式。

3dNetwork包绘制桑基图需要两个文件,一个是提供节点及其关联信息的数据框,另一个是提供节点名称及其性质的数据框

我们首先要手动制作一个原始的数据文件,结构类似于网络分析的输入文件,包含三列信息,第一列为source,内容为节点的名称,第二列为target,内容为属于该source的target名称,第三列为value,及其对应target的相对丰度数据。

我的示例数据格式如下,数据是一套时间序列微生物群落样本的共有OTU,之后手动计算各物种的丰度及其对应的系统发育层次信息。

3dNetwork输入的文件要求使用数字来定义source和target的现实顺序,再用nodes文件将节点名称于数字匹配,因此要对输入文件进行一定的处理。

sankey "sankey.txt",header = TRUE,sep = "\t")nodes as.character(sankey$source),as.character(sankey$target))),stringsAsFactors = FALSE)nodes$ID 0:(nrow(nodes)-1)sankey by.x = "source",by.y = "name")sankey by.x = "target",by.y = "name")colnames(sankey) "X","Y","value","source","target")sankey select = c("source","target","value"))nodes select = c("name"))

之后就可以绘制图像了。

d3Sankey(Links = sankey,Nodes = nodes,fontsize = 20,         Source = "source",Target = "target",Value = "value",         NodeID = "name",file = "Sankey.html",         width = 1200,height = 900)

打开输出的html文件,我们会发现部分图像的元素存在一定的重叠,并且有些节点的顺序可能需要修改。

这一步就非常简单了,输出的结果是可交互的,直接鼠标拖动节点模块即可改变其位置。

关注公众号“红皇后学术”,后台回复“桑基图”获取本文介绍的绘图示例文件和完整代码。

扩展阅读

  • 高通量测序基础知识
  • 转录组测序技术和结果解读
  • 红皇后学术文献解读列表
  • 基本分子生物学实验
  • PAST:最简便易用的统计学分析软件教程目录
  • 每天学习一点R系列
  • 微生物群落数据分析系列教程
  • 微生物研究相关工具
  • 微生物研究投稿期刊简介


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

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

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

  2. r 语言 ggplot上添加平均值_技术贴 | R语言:ggplot堆叠图、冲积图、分组分面、面积图...

    点击蓝字↑↑↑"微生态",轻松关注不迷路 利用R语言堆叠图,我们可以将一个项目中所有样品的物种组成展示出来.下面介绍如何利用R语言进行物种组成分析和可视化.过程分为以下几步: 1) ...

  3. R语言可视化:散点图、散点图和折线图(line charts)、3D散点图、旋转3D散点图、气泡图、corrgram包可视化相关性矩阵、马赛克图( Mosaic plots)、hexbin、密度图

    R语言可视化:散点图.散点图和折线图(line charts).3D散点图.旋转3D散点图.气泡图.corrgram包可视化相关性矩阵.马赛克图( Mosaic plots).hexbin.密度图 目 ...

  4. R语言ggplot2可视化:使用ggrepel包在线图(line plot)的尾端那个数据点添加文本标签(text label)

    R语言ggplot2可视化:使用ggrepel包在线图(line plot)的尾端那个数据点添加文本标签(text  label) 目录

  5. R语言ggplot2可视化:通过水平半小提琴图(Horizontal Half Violin Plots)和抖动数据点( jittered data)可视化雨云图(Rain Cloud plots)

    R语言ggplot2可视化:通过水平半小提琴图(Horizontal Half Violin Plots)和抖动数据点( jittered data)可视化雨云图(Rain Cloud plots) ...

  6. R语言ggplot2可视化:自定义函数在箱图(boxplot)上添加分组样本个数(count)、分组均值(mean)、箱体填充色自定义、数据标签色彩自定义

    R语言ggplot2可视化:自定义函数在箱图(boxplot)上添加分组样本个数(count).分组均值(mean).箱体填充色自定义.数据标签色彩自定义 目录

  7. R语言ggplot2可视化:通过水平半小提琴图和抖动数据点可视化雨云图(Rain Cloud plots)、自定义雨云图中数据点的颜色(数据点的颜色和半小提琴图一致)

    R语言ggplot2可视化:通过水平半小提琴图和抖动数据点可视化雨云图(Rain Cloud plots).自定义雨云图中数据点的颜色(数据点的颜色和半小提琴图一致) 目录

  8. R语言ggplot2可视化:ggplot2可视化半小提琴图(Half Violin Plots)

    R语言ggplot2可视化:ggplot2可视化半小提琴图(Half Violin Plots) 目录 R语言ggplot2可视化:ggplot2可视化半小提琴图(Half Violin Plots)

  9. R语言ggplot2可视化:可视化分组的小提琴图(violin plot)并在分组小提琴内部嵌入箱图(box plot)

    R语言ggplot2可视化:可视化分组的小提琴图(violin plot)并在分组小提琴内部嵌入箱图(box plot) 目录

最新文章

  1. Nature指明大脑引流“废液”的确切路径
  2. 更改Xamarin Android App名称
  3. python做电脑软件-Python编程软件(专业电脑编程工具)V3.9.1 最新版
  4. Python 学习 —— Numpy 、Pandas 傻傻分不清楚
  5. 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)
  6. 使用element UI 快速制作一个列表页面
  7. iphone内关于sqlite开发的相关教程
  8. Manjaro.常用命令/ Mnajaro安装后的配置
  9. 031、jvm实战总结:动手实验:线上系统部署如果采用G1垃圾回收器,应该如何设置参数?
  10. 17 倍新增转化率?快应用单挑 APP,妥妥滴!
  11. 进程池和线程池,协程,IO多路复用
  12. 短信验证码和邮箱验证码
  13. 管家婆 凭证查找 Date exceeds maximum of 19-12-31 报错管家婆 打开经营历程 Date exceeds maximum of 19-12-31 报错
  14. 联想拯救者2020 Y7000安装Ubuntu16.04
  15. LabWindows 读写 Excel
  16. 个性化精简掉了Win10便签顶部如何恢复
  17. Android - 一种相似图片搜索算法的实现
  18. 面试中怎样谈自己的缺点?
  19. 同个网络计算机之间怎么共享,在局域网环境下的多台电脑之间如何实现文件共享需求呢?...
  20. 网站域名在微信端被封禁了怎么办?这样几步就能解封!

热门文章

  1. 修改Oracle数据库字符集
  2. 模块化数据中心还需精工细作
  3. python中count()方法
  4. Request.InputStream 将数据作为XML数据发送
  5. java ajax搜索框提示,Javaweb-案例练习-2-给搜索框添加提示
  6. idea中git提交代码更改作者名字(亲测)
  7. centos安装php扩展soap实现webservice(已经做测试)
  8. Yii的查询搜索函数find findAll findOne:find就是返回结果 findone就是返回一条数据 findall就是返回所有数据
  9. 怎么判断间隙过渡过盈配合_间隙配合过盈配合过渡配合之间的区别
  10. php 过滤特殊字符和sql防注入代码以及xss攻击等