2019-04-10 R画 桑葚图 (sankeycharts)

转自   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里,有三个包可以绘制桑基图:

    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)



你可能感兴趣的:(2019-04-10 R画 桑葚图 (sankeycharts))