跳至正文

【Tableau复杂图表】可视化扩展之桑基图 Sankey Chart

喜乐君
Tableau Visionary Hall of Fame

致力于航空、生产制造、零售等多行业产品方案与服务

  • 🎓 文科背景、法学学士|教育学硕士
  • 📊 业务数据分析「专家」· 敏捷 BI 布道师
  • 📚 《数据可视化分析》《业务可视化分析》图书作者
  • 🎓 中国地质大学(武汉)经管学院 MBA 校外导师
  • 🤝 以 Tableau 会友,致力于构建业务分析通识框架
喜乐君
XILEJUN
喜乐君 Tableau Visionary ✦ 5
📊 业务数据分析「专家」· 敏捷 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之子,自幼收到了很好地教育。

理解了桑基图的特征,我们就可以在各个业务场景中找到它的经典应用,它适合于任何具有输入和输出两段维度的连续性度量分析,比如资金审计、热电厂能耗、物流成本等。如下所示的应用场景强调了“连续度量”的重要性,而其起点和终点就是桑基图的两段。

  1. 能源流动:展示能源(度量值)从来源(input)到最终用途(output)的转化和分布,如电力或热能的生产、传输和消耗过程。
  2. 成本流分析:在生产和服务过程中,通过桑基图可以直观地显示不同成本因素(原材料、人工、运输等)如何组成总成本。
  3. 物料与资源流:用于展示在生产系统中物料的流动路径和损耗情况,帮助优化资源利用效率。
  4. 网站用户行为:分析用户在网站或应用中的行为路径,如页面访问流程、购物车添加到购买的转化流程等。
  5. 供应链与物流:显示产品从原材料采购、生产加工到最终销售的全过程中的物流和信息流。
  6. 生信分析:如构建ceRNA调控网络,单细胞亚群分类,物种门类分类,基因组重测序变异类型等。
  7. 金融数据可视化:追踪用户状态,追踪跑票、变动、迁移,追踪人口流动情况等。

之前,桑基图是比较难以实现的复杂图形,它不仅比条形图多了一个维度,而且多个维度有先后;它包含连续性的度量,但是又没有显而易见的度量轴。

不过,随着越来越多的 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,再到 RegionQuantity数量总和 之流向分析关系。
  • 子问题1:从 Catgory,到 Ship modeQuantity数量总和 之流向分析关系。
  • 子问题2:从 Ship mode,再到 RegionQuantity数量总和 之流向分析关系。

如下图所示:

基于上述的拆分逻辑,我们可以得出如下的结论:

1)为什么说桑基图是复杂可视化?

因为桑基图是有多个子问题构成的“组合图形”,包含多个详细级别,并且具有明显的次序关系

2)桑基图是否依然遵循 Tableau 的可视化规范?

是的,借助于 Viz Extension,可以在单个工作表(sheet)中实现类似于仪表板的组合定制,把视图的复杂性隐藏于开发背后。 事实上,Viz Extensions 和早年推出的 dashboard Extensions 是一个 API 家族。

3)桑基图难在何处?

桑基图的度量简单,推荐单一度量(即便是多阶桑基图);但维度有明显次序关系,以弧线作为“关系”的表达方式。

3、桑基图对应的数据结构

使用 Tableau 的官方扩展,只需要原始的明细表即可,关系就存在于不同字段之间的组合之中。这也是相比之前多表 join 构建关系最为令人振奋的地方。

Viz Extensions 即将在2024.2版本发布,敬请期待吧。

参考: