R语言多层桑基图_桑基图的绘制核心微生物组分类学及丰度展示
为什么要用桑基图
桑基图 (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语言多层桑基图_桑基图的绘制核心微生物组分类学及丰度展示相关推荐
- r语言 转录本结构及丰度_桑基图的绘制核心微生物组分类学及丰度展示
为什么要用桑基图 桑基图 (Sankey diagram)是一种展现数据之间流动和相互关系的图像,类似于一种网络图,通过不同层级节点之间的连接以及连接边的宽度,展示数据之间的流动关系. 在微生物群落分 ...
- r 语言 ggplot上添加平均值_技术贴 | R语言:ggplot堆叠图、冲积图、分组分面、面积图...
点击蓝字↑↑↑"微生态",轻松关注不迷路 利用R语言堆叠图,我们可以将一个项目中所有样品的物种组成展示出来.下面介绍如何利用R语言进行物种组成分析和可视化.过程分为以下几步: 1) ...
- R语言可视化:散点图、散点图和折线图(line charts)、3D散点图、旋转3D散点图、气泡图、corrgram包可视化相关性矩阵、马赛克图( Mosaic plots)、hexbin、密度图
R语言可视化:散点图.散点图和折线图(line charts).3D散点图.旋转3D散点图.气泡图.corrgram包可视化相关性矩阵.马赛克图( Mosaic plots).hexbin.密度图 目 ...
- R语言ggplot2可视化:使用ggrepel包在线图(line plot)的尾端那个数据点添加文本标签(text label)
R语言ggplot2可视化:使用ggrepel包在线图(line plot)的尾端那个数据点添加文本标签(text label) 目录
- R语言ggplot2可视化:通过水平半小提琴图(Horizontal Half Violin Plots)和抖动数据点( jittered data)可视化雨云图(Rain Cloud plots)
R语言ggplot2可视化:通过水平半小提琴图(Horizontal Half Violin Plots)和抖动数据点( jittered data)可视化雨云图(Rain Cloud plots) ...
- R语言ggplot2可视化:自定义函数在箱图(boxplot)上添加分组样本个数(count)、分组均值(mean)、箱体填充色自定义、数据标签色彩自定义
R语言ggplot2可视化:自定义函数在箱图(boxplot)上添加分组样本个数(count).分组均值(mean).箱体填充色自定义.数据标签色彩自定义 目录
- R语言ggplot2可视化:通过水平半小提琴图和抖动数据点可视化雨云图(Rain Cloud plots)、自定义雨云图中数据点的颜色(数据点的颜色和半小提琴图一致)
R语言ggplot2可视化:通过水平半小提琴图和抖动数据点可视化雨云图(Rain Cloud plots).自定义雨云图中数据点的颜色(数据点的颜色和半小提琴图一致) 目录
- R语言ggplot2可视化:ggplot2可视化半小提琴图(Half Violin Plots)
R语言ggplot2可视化:ggplot2可视化半小提琴图(Half Violin Plots) 目录 R语言ggplot2可视化:ggplot2可视化半小提琴图(Half Violin Plots)
- R语言ggplot2可视化:可视化分组的小提琴图(violin plot)并在分组小提琴内部嵌入箱图(box plot)
R语言ggplot2可视化:可视化分组的小提琴图(violin plot)并在分组小提琴内部嵌入箱图(box plot) 目录
最新文章
- Nature指明大脑引流“废液”的确切路径
- 更改Xamarin Android App名称
- python做电脑软件-Python编程软件(专业电脑编程工具)V3.9.1 最新版
- Python 学习 —— Numpy 、Pandas 傻傻分不清楚
- 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)
- 使用element UI 快速制作一个列表页面
- iphone内关于sqlite开发的相关教程
- Manjaro.常用命令/ Mnajaro安装后的配置
- 031、jvm实战总结:动手实验:线上系统部署如果采用G1垃圾回收器,应该如何设置参数?
- 17 倍新增转化率?快应用单挑 APP,妥妥滴!
- 进程池和线程池,协程,IO多路复用
- 短信验证码和邮箱验证码
- 管家婆 凭证查找 Date exceeds maximum of 19-12-31 报错管家婆 打开经营历程 Date exceeds maximum of 19-12-31 报错
- 联想拯救者2020 Y7000安装Ubuntu16.04
- LabWindows 读写 Excel
- 个性化精简掉了Win10便签顶部如何恢复
- Android - 一种相似图片搜索算法的实现
- 面试中怎样谈自己的缺点?
- 同个网络计算机之间怎么共享,在局域网环境下的多台电脑之间如何实现文件共享需求呢?...
- 网站域名在微信端被封禁了怎么办?这样几步就能解封!
热门文章
- 修改Oracle数据库字符集
- 模块化数据中心还需精工细作
- python中count()方法
- Request.InputStream 将数据作为XML数据发送
- java ajax搜索框提示,Javaweb-案例练习-2-给搜索框添加提示
- idea中git提交代码更改作者名字(亲测)
- centos安装php扩展soap实现webservice(已经做测试)
- Yii的查询搜索函数find findAll findOne:find就是返回结果 findone就是返回一条数据 findall就是返回所有数据
- 怎么判断间隙过渡过盈配合_间隙配合过盈配合过渡配合之间的区别
- php 过滤特殊字符和sql防注入代码以及xss攻击等