BOB·游戏(中国) - 官方网站欢迎你

栏目导航
联系BOB
服务热线
400-026-1789
丰富的工程案例,
众多的合作客户,
精良的仪器设备,
细致的周到服务,
欢迎朋友们光临惠顾!
地址: 安徽省马鞍山市
当前位置:BOB > 新闻动态 > 公司动态 >
数据科学编程工BOB具——关键时刻使用桑基图的报告锦上添花
作者:admin 发布日期:2022-09-25

BOB桑基图作为一种比较复杂的图表类型,很少使用,一方面是因为它的参考场景比较窄,另一方面是制作难度比较大中国能源分布图,门槛也比较高。

但是,对于第一个问题,如果你对自己所涉及的业务数据结构以及想要表达和呈现的维度信息有很好的了解,那么在关键时刻使用桑基图真的会让你的报告锦上添花。

桑基图用来表示流动分布和结构对比,原发明者用它来表示能量的流动和分布。

BOB百度百科对桑基图给出了比较完整的解释:

桑基图(Sankey diagram),即桑基能量分裂图,又称桑基能量平衡图。它是一种特定类型的流程图。图中扩展分支的宽度对应于数据流的大小。通常用于能源、材料成分、金融等数据的可视化分析。以马修·亨利·菲尼亚斯·里亚尔·桑基于 1898 年绘制的“蒸汽机能效图”而闻名,此后被命名为“桑基图”。

以马修·亨利·菲尼亚斯·里亚尔·桑基于 1898 年绘制的“蒸汽机能效图”而闻名,此后被命名为“桑基图”。

BOB桑基图最明显的特点是开始和结束分支的宽度之和相等,即所有主要分支的宽度之和应该等于所有主要分支的宽度之和。分枝,以保持能量平衡。

如今的可视化软件行业如此发达,制作这样的桑基图并不难,从最高端的 JS 库(D3、Ecgarts、highlight)到主流的数据科学编程工具(R、Python 等)。 ) 或者每个人都可以使用的自助式 BI 工具(PowerBI、Tableau 等)可以完成这项工作。

本文将重点分享使用R语言的d3network工具包和PowerBI可视化工具制作Sankey图的大致流程(Tableau的Sankey图还是太繁琐中国能源分布图,这里就不展示了,大家可以自行探索如果你感兴趣)。

BOBR中有两个包有现成的桑基图功能:

Networkd3、d3Network,包名大同小异,功能参数也一样,怀疑是同一群人做的。

数据科学编程工BOB具——关键时刻使用桑基图的报告锦上添花

BOB桑基图的数据结构非常简单,只有三列数据信息:

虽然只有三列数据,但是桑基图可以做出多层次的节点。在数据整合方面,我们需要提前将所有节点纵向对应的起点、终点和权重值组合成三列。

数据科学编程工BOB具——关键时刻使用桑基图的报告锦上添花

数据科学编程工BOB具——关键时刻使用桑基图的报告锦上添花

第一张图是我们要呈现的原始数据,所以看起来有两组对应关系,即地区对应地区和省份对应地区。如果要呈现这两组信息,只有地区和地区的对应关系及其权重值,地区和省份的对应关系及其权重值,两组三变量数据表是列对齐和合并。(这有点令人困惑,但实际上是图上有多少个节点对,数据中有多少个三变量观察值)。

以下是R语言代码的实现过程:

图书馆(网络3)

图书馆(“d3Network”)

图书馆(xlsx)

setwd("D:/R/文件/")

Sankey<-read.xlsx("D:/R/File/SankeyData.xlsx",sheetName="Data",header=T,encoding='UTF-8',stringsAsFactors=FALSE,check.names=FALSE)

数据科学编程工BOB具——关键时刻使用桑基图的报告锦上添花

Sankeylinks<-Sankey Sankeynodes<-data.frame(name=unique(c(Sankeylinks$Source,Sankeylinks$Target)),stringsAsFactors=FALSE) Sankeynodes$index<-0:(nrow(Sankeynodes) - 1) Sankeylinks<-merge(Sankeylinks,Sankeynodes,by.x="Source",by.y="name") Sankeylinks<-merge(Sankeylinks,Sankeynodes,by.x="Target",by.y="name")

Sankeydata<-Sankeylinks[,c(4,5,3)];names(Sankeydata)<-c("Source","Target","Value")
Sankeyname<-Sankeynodes[,1,drop=FALSE]

使用d3Network包中的桑基图函数实现:
d3Sankey(Links=Sankeydata,Nodes=Sankeyname,Source="Source",Target="Target",Value="Value",NodeID="name",  
fontsize=12,nodeWidth=30,file="TestSankey.html")

数据科学编程工BOB具——关键时刻使用桑基图的报告锦上添花

数据科学编程工BOB具——关键时刻使用桑基图的报告锦上添花

可惜包对中文支持不够友好~

#------------------------------------------------ ---

使用Networkd3包里面的桑基图函数实现:
sankeyNetwork(Links=Sankeydata,Nodes=Sankeyname, Source ="Source",
Target = "Target", Value = "Value", NodeID = "name",
units = "TWh", fontSize = 12, nodeWidth = 30)

这次的结果还是比较满意的:

数据科学编程工BOB具——关键时刻使用桑基图的报告锦上添花

以上两种方法制作的动态图表(调用了D3的在线图形库,格式为html格式。如果需要将HTML嵌入到PPT中使用,那么本公众号早前已经推送过此类文章中国能源分布图,解释如何在 PPT 中嵌入 HTML 对象)。

将html格式的动态图表网页嵌入到ppt中

PowerBI版本说明:

数据科学编程工BOB具——关键时刻使用桑基图的报告锦上添花

接下来我将讲解如何在PowerBI中实现上述桑基图效果。由于图表不包含在PowerBI内置的基础图表​​库中,我们需要在他的在线社区下载图表的可视化插件。

Power BI 的自定义视觉对象

关于如何下载PowerBI图形可视化插件,如何导入、加载和使用,在之前的另一篇文章中也有详细介绍。

当 PowerBI 遇上 R 语言

数据科学编程工BOB具——关键时刻使用桑基图的报告锦上添花

数据科学编程工BOB具——关键时刻使用桑基图的报告锦上添花

数据科学编程工BOB具——关键时刻使用桑基图的报告锦上添花

然后导入你的桑基图数据源:

数据科学编程工BOB具——关键时刻使用桑基图的报告锦上添花

拖入对应字段:(还是三个字段,起点、终点、权重)

数据科学编程工BOB具——关键时刻使用桑基图的报告锦上添花

数据科学编程工BOB具——关键时刻使用桑基图的报告锦上添花

保存本地文件并发布到PowerBI云空间:

数据科学编程工BOB具——关键时刻使用桑基图的报告锦上添花

数据科学编程工BOB具——关键时刻使用桑基图的报告锦上添花

如果你还没有申请过PowerBI账号,那么最好去他的平台申请一个(提醒你需要使用教育邮箱或者工作邮箱,也就是.com\.edu的结尾)。

发布成功后中国能源分布图,图表对象就存在于你的PowerBI控件中。以后更新本地PowerBI文件时,点击发布,空间中的对象也会同步更新。

然后打开你的PPT(需要13和16以上版本)在应用商店中找到PowerBIFile插件。

数据科学编程工BOB具——关键时刻使用桑基图的报告锦上添花

数据科学编程工BOB具——关键时刻使用桑基图的报告锦上添花

点击添加,输入你之前申请的账号密码,你存储的dashboard对象就会出现。点击对应的桑基图对象,完成导入。

导入的桑基图无论是在PPT的编辑状态还是PPT的展示状态,都能保留所有的动态效果。(这就是微软PowerBI与office平台对接带来的强大优势中国能源分布图,非常适合作为大屏互动演示突出亮点)

BOB最后,似乎再次强调,Sankey 是用来呈现特定场景下的流动关系和结构比较的。不要乱用这种图表,因为它很酷。数据可视化最重要的一点是图表不应该乱用。为场景使用适当的图表。