致力于航空、生产制造、零售等多行业产品方案与服务
- 🎓 文科背景、法学学士|教育学硕士
- 📊 业务数据分析「专家」· 敏捷 BI 布道师
- 📚 《数据可视化分析》《业务可视化分析》图书作者
- 🎓 中国地质大学(武汉)经管学院 MBA 校外导师
- 🤝 以 Tableau 会友,致力于构建业务分析通识框架
📚 本文配套课程 · 数据可视化分析系列
🎬 B 站课程:数据可视化分析:Tableau/SQL 原理与实践 — https://www.bilibili.com/cheese/play/ss8093
Tableau 2024.2版本中正式推出 Viz Extentions 可视化扩展,并同步发布了官方及合作伙伴开发的24个高级可视化,分别是:


关联月度:
本系列博客,将依次介绍这些复杂可视化背后的适用场景和注意事项。
一、桑基图的特征和应用场景
复杂图形无一例外都是简单可视化的堆叠,因此理解桑基图的起点是条形图和折线图。
条形图(bar chart)是一个离散维度、一个连续度量构成的“排序主题”可视化,而折线图(line chart)是一个连续维度(日期)、一个连续度量构成的“趋势主题”可视化,桑基图(Sankey Chart)则是两个或离散维度和一个连续度量构成的“流向主题”可视化。
- 桑基图必须要有两个或以上维度分类,两个维度分类有必然的先后次序,分别表示流向的起点、终点。
- 桑基图必须要有且只有一个连续的度量值,用来表示流向的对象,比如资金的流向、燃气的流向等等。
桑基图最早由爱尔兰工程师Sankey (9 November 1853 – 3 October 1925)设计,,用来描述蒸汽机(steam engine)的热量流转效率(energy flow efficiency)。
在这里,连续性的度量是“热量”,离散的输入和输出代表维度分类。
如右侧所示,内燃机能量的取向,除了正常的做功驱动机器运转,相当多的能力被浪费掉了,包含驱动损失、齿轮等磨损损失、热流失等等。能量是守恒的, Sankey 发明的这个图很好地描述了热量的输入和输出之平衡关系,帮助设计者理解并改进,所以又称之为“热平衡图”。

下图来自于100多年前的 Sankey 图示(1898年),相对而言形式更加严谨复杂。


Sankey,全名Matthew Henry Phineas Riall Sankey CB CBE FIMechE (9 November 1853 – 3 October 1925),爱尔兰工程师,英国军队皇家工程局(Royal Engineers)的上校(caption)。
英国上将 William Sankey, C.B之子,自幼收到了很好地教育。
理解了桑基图的特征,我们就可以在各个业务场景中找到它的经典应用,它适合于任何具有输入和输出两段维度的连续性度量分析,比如资金审计、热电厂能耗、物流成本等。如下所示的应用场景强调了“连续度量”的重要性,而其起点和终点就是桑基图的两段。
- 能源流动:展示能源(度量值)从来源(input)到最终用途(output)的转化和分布,如电力或热能的生产、传输和消耗过程。
- 成本流分析:在生产和服务过程中,通过桑基图可以直观地显示不同成本因素(原材料、人工、运输等)如何组成总成本。
- 物料与资源流:用于展示在生产系统中物料的流动路径和损耗情况,帮助优化资源利用效率。
- 网站用户行为:分析用户在网站或应用中的行为路径,如页面访问流程、购物车添加到购买的转化流程等。
- 供应链与物流:显示产品从原材料采购、生产加工到最终销售的全过程中的物流和信息流。
- 生信分析:如构建ceRNA调控网络,单细胞亚群分类,物种门类分类,基因组重测序变异类型等。
- 金融数据可视化:追踪用户状态,追踪跑票、变动、迁移,追踪人口流动情况等。
之前,桑基图是比较难以实现的复杂图形,它不仅比条形图多了一个维度,而且多个维度有先后;它包含连续性的度量,但是又没有显而易见的度量轴。
不过,随着越来越多的 BI 工具内嵌了桑基图图表,一切变得简单,特别是 Tableau 的 Viz Extensions 让一切更加容易。
二、Tableau制作和深度诠释(Tableau Viz 篇)
在2024.2版本的 Tableau 中,借助于 Viz Extensions可以在瞬息之间完成双维度或多个维度的桑基图。按照之前所讲的桑基图构成要素(两个及以上维度分类、一个连续度量),制作者只需要将维度拖入“详细级别”(level),而把度量拖入代表流向的“连线”(Link)即可。
非常流畅,非常 Tableau~

基于问题的标准解构,我们可以描述为:从 Catgory,到 Ship mode,再到 Region 的 Quantity数量总和 之流向分析关系。
1、两阶桑基图
考虑到三个维度分类在理解上的复杂性,这里先说一个两个分类的简单场景:

从问题视角描述:从 类别,到细分 的利润总和 之流向,其中两个维度是 类别、细分,一个度量是 利润总和。
那是否可以说?这个桑基图的详细级别(level of detail)、问题的分析视角是 “类别 *细分”呢??
这个是关键。
答案是,不能!至少不准确。
在条形图中,多个维度字段构成详细级别,比如“不同类别、子类别、细分的利润总和”,但桑基图中,每一个阶段构成一个详细级别,中间的连线又构成一个详细级别。因此上述“双阶桑基图”其实是由三个子问题构成:三个堆叠堆叠条形图的变种。
- 各个 类别 的 利润(总和) 之构成
- 各个 细分 的 利润(总和)之构成
- 各个 类别、细分 的 利润(总和)之构成
从仪表板的角度,我们可以 将其拆分为如下三个堆叠条形图,代表背后的起点、终点 和 流向(关系)。桑基图的流向连线,是 堆叠条形图按照比例宽度以弧线拉长而已,它的弧度只是代表左右的位置,而没有度量上的其他意义。

2、三阶桑基图
再会看开头的三阶段桑基图,我们可以把它理解为两个“双阶桑基图”的组合,这样就包含了3个分类详细级别、2个流向详细级别。
- 问题:从 Catgory,到 Ship mode,再到 Region 的 Quantity数量总和 之流向分析关系。
- 子问题1:从 Catgory,到 Ship mode 的 Quantity数量总和 之流向分析关系。
- 子问题2:从 Ship mode,再到 Region 的 Quantity数量总和 之流向分析关系。
如下图所示:

基于上述的拆分逻辑,我们可以得出如下的结论:
1)为什么说桑基图是复杂可视化?
因为桑基图是有多个子问题构成的“组合图形”,包含多个详细级别,并且具有明显的次序关系
2)桑基图是否依然遵循 Tableau 的可视化规范?
是的,借助于 Viz Extension,可以在单个工作表(sheet)中实现类似于仪表板的组合定制,把视图的复杂性隐藏于开发背后。 事实上,Viz Extensions 和早年推出的 dashboard Extensions 是一个 API 家族。
3)桑基图难在何处?
桑基图的度量简单,推荐单一度量(即便是多阶桑基图);但维度有明显次序关系,以弧线作为“关系”的表达方式。
3、桑基图对应的数据结构
使用 Tableau 的官方扩展,只需要原始的明细表即可,关系就存在于不同字段之间的组合之中。这也是相比之前多表 join 构建关系最为令人振奋的地方。
Viz Extensions 即将在2024.2版本发布,敬请期待吧。
参考:
- Tableau Exchanges :Viz Extensions
- 维基百科:
- 内燃机的桑基图 https://www.mvwautotechniek.nl/zh-CN/桑基图/