美文网首页R语言作图
2019-04-10 R画 桑葚图 (sankeycharts

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

作者: pebble329 | 来源:发表于2019-04-10 16:39 被阅读0次

    转自   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

        本文链接:https://www.haomeiwen.com/subject/ookoiqtx.html