network3D: 交互式桑基图
桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,通常应用于能源、材料成分、金融等数据的可视化分析。
也可以视为一种层级网络图,比如展示上一篇文章中的生物信息课程网络图;也可以展示菌群随时间变化的趋势,如3分和30分文章差距在哪里文章所示哈扎人肠道菌群的季节变化规律。
下面将用2个例子,以我们生物信息研讨班涉及的学习框架和课程分配为示例数据,展示如何用常见网络图数据绘制桑基图。
最简单桑基图
第一列为上游
,第二列为下游
,第三列为联通值,值越大线越粗。如果您自己有数据,只需要替换输入部分,后面数据格式转换代码是通用的。
network <- "Src;Target;Value
Bioinfo;Biology;20
Bioinfo;Math;20
Bioinfo;Program;20
Bioinfo;NGS;20
Program;Linux;8
Program;Python;8
Program;R;6
NGS;RNAseq;1
NGS;ChIPseq;1
NGS;m16Sseq;1
NGS;Metagenome;1
NGS;SingeCellSeq;1
NGS;DNAmethylseq;1
NGS;lncRNA;1
NGS;Exomeseq;1
NGS;TCGA;1
"network <- read.table(text=network, sep=";", header=T, row.names=NULL, quote="", comment="")network <- network[,1:3]
colnames(network) <- c("Src", "Target", "Value")# 转换原始数据点为0起始的一系列整数表示
factor_list <- sort(unique(c(levels(network$Src), levels(network$Target))))
num_list <- 0:(length(factor_list)-1)
levels(network$Src) <- num_list[factor_list %in% levels(network$Src)]
levels(network$Target) <- num_list[factor_list %in% levels(network$Target)]network$Src <- as.numeric(as.character(network$Src))
network$Target <- as.numeric(as.character(network$Target))attribute <- data.frame(name=c(factor_list))
network
Src Target Value
1 2 20
1 8 20
1 11 20
1 10 20
11 6 8
11 12 8
attribute
head(attribute[, 1])
[1] 16Sseq Bioinfo Biology ChIPseq DNAmethylseq
[6] Exomeseq
sankeyNetwork(Links = network, Nodes = attribute,Source = "Src", Target = "Target",Value = "Value", NodeID = "name",fontSize= 12, nodeWidth = 30)
点线分组桑基图
网络数据比上一步的桑基图多一列,指示线的属性;再提供一个节点分组信息文件,获得层次更鲜明的桑基图。
只需要修改对应的数据,后面格式转换的代码通用。
network <- "Src;Target;Value;Link_Grp
Bioinfo;Biology;20;Main
Bioinfo;Math;20;Main
Bioinfo;Program;20;Main
Bioinfo;NGS;20;Main
Program;Linux;8;Sub
Program;Python;8;Sub
Program;R;6;Sub
NGS;RNAseq;1;Sub
NGS;ChIPseq;1;Sub
NGS;16Sseq;1;Sub
NGS;Metagenome;1;Sub
NGS;SingeCellSeq;1;Sub
NGS;DNAmethylseq;1;Sub
NGS;lncRNA;1;Sub
NGS;Exomeseq;1;Sub
NGS;TCGA;1;Sub
"network <- read.table(text=network, sep=";", header=T, row.names=NULL, quote="", comment="")network <- network[,1:4]
colnames(network) <- c("Src", "Target", "Value", "Link_Grp")factor_list <- sort(unique(c(levels(network$Src), levels(network$Target))))
num_list <- 0:(length(factor_list)-1)
levels(network$Src) <- num_list[factor_list %in% levels(network$Src)]
levels(network$Target) <- num_list[factor_list %in% levels(network$Target)]network$Src <- as.numeric(as.character(network$Src))
network$Target <- as.numeric(as.character(network$Target))# 只需要前两列
attribute <- "name;group;size
Bioinfo;Class;4
Biology;Class;4
Math;Class;4
Program;Class;4
NGS;Class;4
Linux;On;2
Python;Off;2
R;Off;2
RNAseq;Off;1
ChIPseq;On;1
16Sseq;On;1
Metagenome;On;1
SingeCellSeq;InPrepare;1
DNAmethylseq;InPrepare;1
lncRNA;InPrepare;1
Exomeseq;InPrepare;1
TCGA;InPrepare;1"attribute <- read.table(text=attribute, sep=";", header=T, row.names=NULL, quote="", comment="")
attribute <- attribute[,1:2]
colnames(attribute) <- c("name", "group")
attribute <- attribute[match(factor_list, attribute$name),]sankeyNetwork(Links = network, Nodes = attribute,Source = "Src", Target = "Target",Value = "Value", NodeID = "name",NodeGroup = "group", LinkGroup = "Link_Grp",fontSize= 14, nodeWidth = 30)
桑基图还有类似的称为冲击图 (alluvial diagram)的展示,具体可见ggalluvial:冲击图展示组间变化、时间序列和复杂多属性alluvial diagram。
说到交互式可视化,还有之前推出的:
R语言交互式可视化包CanvasXpress
视频教程:R语言recharts包绘制交互式图形
往期精品(点击图片直达文字对应教程)
机器学习
后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集
network3D: 交互式桑基图相关推荐
- 设计桑基图_教你用pyecharts制作交互式桑基图,赶快学起来吧!
由于工作的需要,经常需要进行可视化展示,除了一些常用的BI工具,我也会使用python对数据进行可视化. python的第三方可视化库有很多,比如matplotlib.seaborn.plotly.b ...
- riverplot绘制桑基图
桑基图是一种方便说明信息.资源流动和图形,图形中的分.合正如漂流的分叉与汇合,如可用于比较不同簇间关系,可以用来表示各个节点之间转换. Sankey plots are a type of diagr ...
- 可视化应用实战案例:绘制交互式+pdf+png等多格式桑基图
写在前面 桑基图挺好看的,用于观察不同门类之间的从属关系,并且绘制很漂亮的结构图,当然可以用于很多个地方.这里我们用微生物组数据的phyloseq对象,很快很方便的为大家构建一个桑基图.所以如果你有p ...
- pyecharts实现多节点、长路径的sankey桑基图
1 画桑基图一个容易出错的细节 pyecharts︱交互式pyecharts的相关使用教程 简单的用pyecharts实现超多节点.较长路径的桑基图,一个样图: 起先拿网络教程里的数据跑的时候没有任何 ...
- 【Python】使用pyecharts制作桑基图
提示:基于pyecharts和pandas,本文详细而全面的讲解了从数据处理到桑基图制作的整个过程 文章目录 前言 一.pyecharts是什么? 二.使用步骤 1.引入库 2.读入数据 3.数据处理 ...
- python怎么画函数图_可视化|Python绘制桑基图
桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图.它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,通常应用于电商.材料成分.金融等数据的可视化分析.因18 ...
- Python绘制桑基图
很多时候,我们需要一种必须可视化数据如何在实体之间流动的情况.例如,以居民如何从一个国家迁移到另一个国家为例.这里演示了有多少居民从英格兰迁移到北爱尔兰.苏格兰和威尔士. 桑基图简介 从这个 桑基图 ...
- 在线绘图|2分钟轻松搞定桑基图(Sankey diagrams)
桑基图(Sankey diagrams) 桑基图(Sankey diagrams),即桑基能量分流图,也叫桑基能量平衡图.用来展示数据的"流动"变化,分支的宽度表示流量的大小,应用 ...
- python制作桑基图_Python制作桑基图
这张图是不是十分的漂亮呢?今天偶然间看到一张十分炫酷的图,深深地被它妖艳炫酷的的外表所迷惑,查了许多资料之后,得知它叫"桑基图".古人云:"桑吉桑吉,高贵美丽" ...
最新文章
- 特征选择、特征选择方法
- Gson源码解析和它的设计模式
- 多数元素—leetcode169
- 阿里云Tech Insight 企业迁云实战专场强势来袭!
- 程序员修神之路--晦涩难懂的CAP,是否完全正确?
- AsyncTask知识整理笔记
- linux phpunit 安装,在CentOS 7/CentOS 8系统中安装PHPUnit的方法
- 安装varnish-dashboard
- rabbitmq消息保证幂等的消息设计
- webpack打包原理(待续)
- 呉服屋 2011/03/24早会文章
- 单因子测试用什么软件检查,如何进行单元测试?
- 数据库实体表的关系学习
- ulipad.4.1.zip linux,UliPad 使用介绍
- 小学英语与计算机技术整合,浅谈多媒体技术与小学英语教学的整合
- 测试人,测试魂,3年测遍32个城,主管的一句话给予了他源源不断的动力
- 和睦家 php研发,豹小秘落户和睦家,探索医疗场景新应用
- linux修改X2APIC参数,虚拟机对x2apic destination mode的选择
- PWmat案例赏析:利用激光脉冲实现绝缘体-金属超快转变
- 《万历十五年》 黄仁宇
热门文章
- 客座编辑:崔辰州(1976-),男,博士,中国科学院国家天文台研究员、硕士生导师,国家天文台信息与计算中心主任...
- 【数字逻辑设计】推气泡
- 【Windows】Windows10-Telnet的使用
- 【JVM】javap命令行分析(a++ + ++a)的虚拟机指令
- 【数据结构与算法】图结构最小生成树Kruskal算法的Java实现
- AE 中的查找与定位,以城市查找为例
- JVM系列一:Java虚拟机与操作系统结构比较
- input 标签在做动画时的bug
- 编程神回复:数学不好能学编程吗?网友的回复令人满怀信心!
- 帆软助力惠科集团产值提升1%以上,带来上亿元数据价值