转自? ?R?;?- wenyusuran的专栏 - CSDN博客 https://blog.csdn.net/wenyusuran/article/details/80674577
桑基图(Sankey diagram),即?;芰糠至魍?,也叫?;芰科胶馔?。它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,通常应用于能源、材料成分、金融等数据的可视化分析。因1898年Matthew Henry Phineas Riall Sankey绘制的“蒸汽机的能源效率图”而闻名,此后便以其名字命名为“桑基图”。?;甲蠲飨缘奶卣骶褪牵寄┒说姆种Э矶茸芎拖嗟?,即所有主支宽度的总和应与所有分出去的分支宽度的总和相等,保持能量的平衡。
????制作工具就有:JS库(D3、Ecgarts、highlight)、R、Python、PowerBI、Tableau、BDP个人版。
????在R里,有三个包可以绘制?;迹?/p>
????library(riverplot)????? ??
??? library("d3Network")
??? library(Networkd3)
??? 然而第一个包特色过于鲜明,第二个包对中文不太友好,所以个人偏向于第三个包。
---------------------
作者:文宇肃然
来源:CSDN
原文:https://blog.csdn.net/wenyusuran/article/details/80674577
版权声明:本文为博主原创文章,转载请附上博文链接!
library(networkD3)
setwd('D:/rscript/')
#a=read.csv("m.csv")#a为合并之后的数据
a? <- read.csv('1.csv',header=TRUE,fileEncoding='utf-8')
a$s? =? as.character(a$s) #? 导入数据的起点终点是factor类型,需要将其转为chr,否则之后unique的是因子水平,不能进行合并。
a$t? =? as.character(a$t)
Sankeylinks<-a
Sankeynodes<-data.frame(name=unique(c(Sankeylinks$s,Sankeylinks$t)))?
Sankeynodes$index<-0:(nrow(Sankeynodes)? -? 1)
Sankeylinks<-merge(Sankeylinks,Sankeynodes,by.x="s",by.y="name")
Sankeylinks<-merge(Sankeylinks,Sankeynodes,by.x="t",by.y="name")
Sankeydata<-Sankeylinks[,c(4,5,3)];
names(Sankeydata)<-c("Source","Target","Value")
Sankeyname<-Sankeynodes[,1,drop=FALSE]
sankeyNetwork(Links=Sankeydata,Nodes=Sankeyname,? Source? ="Source",
? ? ? ? ? ? ? Target? =? "Target",? Value? =? "Value",? NodeID? =? "name",
? ? ? ? ? ? ? fontSize? =? 12,? nodeWidth? =? 30)