打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
绘制炫酷桑基图,R语言(networkD3包)能搞定?

你知道如何使用R语言绘制桑基图吗?

小锐当然知道啦,并且教你

绘制酷炫的桑基图。



开课啦

桑基图(Sankey)是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,其最明显的特征就是,始末端的分支宽度相等,即所有主支宽度的总和应与所有分出去的分支宽度的总和相等,保持能量的平衡。



今天小锐就介绍一下,如何使用R语言绘制这种酷炫的桑基图。



1

安装并调用“networkD3”绘图包:


install.packages('networkD3')

library(networkD3)



2

加载数据:


mydata1 <- data.frame(class="">

type=c('社会科学','教辅类','工具书','计算机','计算机','微生物','金融'),

name=c('社会百科','算法图解','牛津词典','算法图解','python入门','消失的微生物','货币金融学'), 

value=c(33,10,13,14,55,26,12),stringsAsFactors=FALSE)

> 查看原始数据:

mydata1 



3

整理数据,以满足绘图要求:


3.1

首先,按能量平衡原则,计算各层级value值,按层级关系以长表格形式列出


mydata2<>

mydata1 <->

names(mydata2) <->

names(mydata1) <->

mydata <->

> 查看数据形式:

mydata


3.2

然后,将mydata数据中的“source”“target”替换成索引值(注:index以0开始)


Sankeylinks <->

Sankeynodes <- data.frame(name="">

Sankeynodes$index <- 0:(nrow(sankeynodes)="" -="" 1)=""  =""  ="">

Sankeylinks <- merge(sankeylinks,sankeynodes,by.x='source' ,by.y='name'>#替换source列

Sankeylinks <- merge(sankeylinks,sankeynodes,by.x='target' ,by.y='name'>#替换target列

Sankeydata <->#只保留索引值列,用于绘图

names(Sankeydata) <->

Sankeyname <- sankeynodes[,1,drop="FALSE]"  ="">

> 查看整理好的绘图数据:

Sankeydata



4

经过3.1和3.2的数据整理后,终于要绘制Sankey图:


> 首先了解下绘图参数:

Link:包含每个link的Source、Target和Value值的数据框;

Nodes:包含节点id和节点属性的数据框;

Source:字符串形式,Link数据框中的“Source”变量;

Target:字符串形式,Link数据框中的“Target”变量;

Value:字符串形式,Link数据框中的“Value”变量;

NodeID:字符串形式,指定节点中的节点ID,索引必须以0开始;

fontSize:设置字体大小;

height:桑基图的帧区域的高度(以像素为单位);

width:桑基图的帧区域的宽度(以像素为单位);

nodeWidth:设置节点宽度;

sinksRight:调节最后节点文字标注方向。布尔值,TRUE:标注在左侧,FALSE:标注在右侧。

> 绘制并保存桑基图:

sank <- sankeynetwork(links="Sankeydata," nodes="Sankeyname," source='Source' ,="" target='Target' ,="" value='Value' ,="" nodeid='name' ,="" fontsize="12," nodewidth="30," height="600," width="800," sinksright="">

saveNetwork(sank, 'test.html')



了解了桑基图的基本绘图方法后,将范例数据换成你的实际数据,你也可以绘制一张你的专属桑基图,快快行动起来吧!


供稿:谭迪

编辑:鲁淑妮

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
好看的桑基图是如何炼成的!
桑基图或许可以告诉你打工人的故事!
Python 标准库之 xml.etree.ElementTree
Elasticsearch 预处理没有奇技淫巧,请先用好这一招!
生物信息学入门 富集分析与蛋白质互作用网络(PPI)的可视化 Cystocape入门指南
matlab数据自动循环写入excel文件
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服