桑宜图SanKey

原始数据是类似以下格式存储在EXCEL中,其表示是数据从一个地方流向别外一个地方,将数据别存为CSV后上传到RStudio

161615_bvky_2718942.png

因为原始数据中From和To字段是重复的,增加描述项使每个名字都不唯一; 并且去除0值

db<- read.csv(file.choose(),T,na.strings="")        #从csv读入文件
data<-db                                            #保存文件
data<-data[data$Weight!=0,]                         #去除0
data$From<-paste("from_",data$From,sep="")          #增加描述
data$To<-paste("to_",data$To,sep="")                #增加描述

#################################################################

运用googleVis建立桑基图

library(googleVis)
#demo(googleVis)
BUlist=c("311","312","320","355","360","370","380","848","999")
dataG<-data
dataG$Weight<-round(abs(dataG$LC)/1000,0)     #转为k
dataG<-dataG[dataG$Weight!=0,]                #去除0
#设置sankey格式
Sankey <- gvisSankey(dataG, from="From", to="To", weight="Weight",
                     options=list(
                       height=500,width=750,          #高,宽
                       sankey="{link: {color: { fill: '#d799ae' } },
                       node: { color: { fill: '#a61d4c' },
                       label: { color: '#871b47' } }}"))
plot(Sankey)                           #显示sankey
print(Sankey,file=paste("Sankey.html"))    #另存为html

最后输出格式如下

162235_HWD1_2718942.png

################################################################
运用d2Network建立桑基图

#d3Network需要保持特定格式进行
#Links格式为data.frame,并且一般存为source,target,value
#source,target格式为int,并且一定从0开始
#node格式为data.frame,格式为character
library(d3Network)
d3node<-data.frame(name=unique(c(data$From,data$To)),
                   stringsAsFactors=FALSE)         #读入node名称
d3node$seq=0:(nrow(d3node)-1)                      #加入序号,用以合并转换
d3link<-data
d3link=merge(d3link,d3node,by.x="From",by.y="name")       #合并增加From在node中序号
names(d3link)[5] <- "source" 
d3link=merge(d3link,d3node,by.x="To",by.y="name")        #合并增加To在node中序号
names(d3link)[6] <- "target" 
d3link$value<-round(d3link$Weight/1000,2)             #取整值
d3link<-d3link[d3link$value!=0,]                      #去除0

d3link <- subset(d3link, select=c("source", "target", "value"))   #只选取所需列 
d3node <- subset(d3node, select=c("name"))    #只选取所需列
#生成html文件
d3Sankey(Links = d3link, Nodes = d3node, Source = "source",  
         Target = "target", Value = "value", NodeID = "name",  
         fontsize = 12, nodeWidth = 30,file = "TestSankey.html")  

最后输出格式如下

转载于:https://my.oschina.net/tedzheng/blog/803188

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值