什么是桑基图,桑基图又有什么作用?

桑基图是一种用于描绘值从一组到另一组流动的图表,常见于能量、物料或资本的转移分析。它由MatthewHenryPhineasRiallSankey船长提出,以展示蒸汽机效率。文章提到了经典的应用案例,如拿破仑远征地图和人口迁移。桑基图由节点和边构成,线条宽度代表流量大小。用户可以通过工具如镝数图表轻松创建桑基图,无需编程经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

桑基图 (Sankey Diagram)是用于描述一组值到另一组值的流向的图表。

最早由爱尔兰人Matthew Henry Phineas Riall Sankey 提出。

Sankey是一名船长也是工程师,1898年Sankey发表一篇关于蒸汽机能源效率的文章,文中首次推出了第一个能量流动图,后来这种图也就由他的名字来命名,中文音译为桑基图。

经典桑基图:拿破仑远征地图

桑基图主要关注能量、物料或资本等在系统内部的流动和转移情况。

在桑基图内部,不同的线条代表了不同的流量分流情况,线条的宽度代表此分支所代表的数据大小。

我们通过例子来进行说明,下图所示的数据,是一段时间内,各个国家之家的人口流动数(单位:万人)

如果用桑基图来展示这份数据,我们可以更直观的看到不同国家之间的人口流动情况,如图所示。

从这个例子可以看出来,桑基图主要由节点跟边两种元素构成

每个节点表示一个国家,每个边连接着两个节点,边的左边是起始点(即人口流出国家),右边是终止点(即人口流入国家),边的粗细则代表流量的大小。

其实除了常规桑基图之外,还有用点阵实现运动的桑基图。

下面这张图的作者统计了近年来印度发生的强奸事件,以及它们的处理结果。作品用一个个运动的点来代表一桩桩强奸案,可以看到大部分案件都流向了无疾而终,视觉效果令人震撼。同时也具有一定的现实意义。

桑基图怎么做?

如果我想在自己的数据分析里用到桑基图,要怎么做呢?

很简单,市面上有很多可以做桑基图的工具,这里我推荐镝数图表,就是下面这个↓

镝数图表-简单好用的免费在线可视化图表制作工具 (dycharts.com)icon-default.png?t=N2N8https://dycharts.com/appv2/#/pages/home/index?channelCode=GRXUA334&hmsr=csdn&hmpl=20230324

登录镝数图表之后,只需要在图表模板里找到桑基图,点击编辑,然后把自己的数据复制粘贴过去就可以了。

没有代码基础也可以很快完成,他还准备了很多不同风格的主题色,放在PPT里也很合适。

以上就是关于桑基图的全部介绍啦~欢迎补充哦。

### 桑基图的定义 桑基图是一种特殊的流程图形式,其分支的宽度代表数据流量的大小。这种图表最初由 Matthew Henry Phineas Riall Sankey 在1898年通过绘制“蒸汽机的能源效率图”而得名,并因此广泛传播[^2]。 ### 桑基图的主要用途 #### 能源领域 桑基图常用于展示能源流动的过程,例如能源生产、传输和消耗之间的关系。它的直观特性使得复杂的数据流变得易于理解[^2]。 #### 材料成分分析 在工业制造过程中,桑基图可以用来表示原材料到最终产品的转化过程及其损耗情况。这有助于优化资源利用并减少浪费[^2]。 #### 金融数据分析 对于财务报表中的资金流向或者预算分配等问题,采用桑基图能够清楚地展现不同账户间金额转移的具体细节[^2]。 ### 数据可视化中的角色 无论是在专业场合还是面向大众群体,在进行数据可视化时都需要考虑目标观众的知识水平差异。如果面对的是具有专业知识背景的人士,则可以直接运用较为复杂的表达手段和技术术语;而对于一般公众而言,则应力求简单明了以便于他们更好地理解和接受所传递的信息[^3]。 ```python import matplotlib.pyplot as plt from matplotlib.sankey import Sankey fig = plt.figure(figsize=(8, 6)) ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[], title="Simple Example of a Sankey Diagram") sankey = Sankey(ax=ax, unit=None) # Adding flows and labels to the sankey diagram. flows = [0.25, 0.15, 0.1 , -0.45, -0.05, -0.2 ] labels = ['A', 'B', 'C', 'D', 'E', 'F'] colors = ['#FAA43A','#8DD3C7','#BEAED4','#FB8072','#BEBADA','#BCBDDE'] sankey.add(flows=flows, labels=labels, orientations=[-1,-1,+1,+1,+1,+1], trunklength=1.5, pathlengths=[1.,1.,1.,1.,1.,1.]) diagrams = sankey.finish() plt.show() ``` 以上代码片段展示了如何使用 Python 的 Matplotlib 库创建基本的桑基图实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值