首页
社区
博客

优阅达“优分享” | 替代 Tableau 堆叠条形图:创建分段总量条形图的 3 种方法

本文主要介绍 3 种使用 Tableau 创建分段总量条形图的方法,以便你对比展示各区域不同客户细分市场的销售额。

你是不是也觉得堆叠条形图不太好用?Tableau 大神 Kevin Flerlage 坦言道:他讨厌堆叠条形图。原因很简单,虽然堆叠条形图支持轻松比较每根条形的总量,也能比较靠近横轴的那一段,但当你想比较其他不靠轴的堆叠条时,就会变得非常困难。

有趣的是,近期一种创新的可视化图表引起了 Tableau 社区用户们的关注。这种图表被 Kevin 称为“分段总量条形图”(Segmented Total Bar Chart),几乎解决了堆叠条形图的所有痛点。


分段总量条形图有何特别之处?

想象一下,一根灰色的大条代表某个区域的总销售额,而在这根灰条内部,嵌套着消费者、企业、办公用品三个客户细分市场的销售额,分别用绿色、橙色、蓝色的小条显示。

但它们并非堆叠在一起,而是并排排列、都从横轴的 0 值起点开始。

这样一来,你就可以:

  • 比较同一区域内不同细分市场的表现

  • 跨区域比较同一客户群的表现

  • 比较各区域的总量

  • 因为所有条形都对齐到坐标轴,任何比较都变得更加直观明了


3 种分段总量条形图制作方法

实际上,Tableau 社区中还有其他用户分享了类似的可视化。本文主要介绍 3 种不同作者分享的方法,均使用 Tableau Superstore 示例数据,展示各区域不同客户细分市场的销售额。

作为对比的参考图,让我们先看一下传统的 Tableau 堆叠条形图:


方法一:INDEX 函数 + 双轴

第一种方法,由数据粉 Sebastine Amede 整理。这种方法的核心思路是利用 INDEX() 表计算函数为每个分段生成序号,再通过双轴将总量条形和分段条叠加在一起。

关键技巧在于:

  • 外层灰色条设置较大的固定宽度,形成“容器嵌套”的效果

  • 内层彩色条形设置较小的宽度,并通过调整对齐方式让它们并排显示

  • 降低彩色条的透明度,使重叠部分可见

操作步骤如下:

  • 创建计算字段 Index,公式为:INDEX();

  • 将“区域”维度字段拖到列,将“销售额”字段拖到行两次,创建双轴并同步轴;

  • 在第二个标记卡中,将“细分”字段拖到颜色;

  • 将 Index 计算字段拖到列,右键点击选择“计算依据”→“细分”;

  • 在控制灰色条形的标记卡中,点击“大小”,设置为“固定”,输入 6,居中对齐。设置颜色为浅灰色;

  • 对于彩色的细分市场条形,点击“大小”,设置为“固定”,输入 1.5,调整对齐方式。适当降低透明度以显示重叠效果。

TIPS: 外层条形的宽度大小应为分段的 2 倍。例如有 3 个细分市场,外层条形宽度设为 6,这样才能容纳所有内层条形。

这种方法的可视化效果最为美观,彩色条整齐排列在灰条内部,透明度设置让层次感更强,而且支持灵活调整各条形的大小和位置。不过,INDEX() 表计算在某些复杂场景下可能不够稳定,需要注意计算依据的设置。


方法二:参考线填充

第二个方法由数据粉 Darragh Murray 整理。这是三种方法中最简单的,巧妙利用了 Tableau 参考线的“向下填充”功能。核心思路是:

  • 先创建常规的分组条形图,每个区域内的分段并排显示

  • 添加一条“窗口级别”的参考线,计算该区域的销售总额

  • 将参考线下方填充为灰色,这样就自然形成了一个灰色的"背景条"

本质上,灰色条并不是真正的条形图,而是参考线的填充区域。

操作步骤如下:

将“销售额”字段拖到行,将“区域”和“细分”字段拖到列,按总销售额对区域和细分维度进行降序排列。再将“细分”拖到“标记”卡的颜色。

从“分析”窗格拖动“参考线”到画布中,添加到“区间”级别(范围)。将值设为销售额的“合计”,这样参考线会显示该区域的销售总额。设置“向下填充”为浅灰色,这样就形成了灰条的效果。

最后,去掉多余网格线,修改列边框为细虚线,清理数字格式。

这种方法操作最简单,初学者也能快速上手,不需要创建任何计算字段,参考线会自动计算总量,无需担心计算出错。

但缺点也很明显:灰色背景条并非独立的条形图,定制性较差;各分段之间会显示分隔线,视觉上不如方法一紧凑;参考线标签选项有限,难以灵活显示区域名称等自定义信息。


方法三:WINDOW_SUM 函数 + 小计间距

最后一个方法,由 Kevin 整理。方法的核心是使用 WINDOW_SUM() 表计算函数(或 FIXED LOD 详细级别表达式)为每个区域生成一个汇总值。具体思路是:

  • 创建分组条形图,每个分段单独显示

  • 使用 WINDOW_SUM(SUM([Sales])) 计算每个区域的总销售额

  • 将总量条放大到最大尺寸,让三根灰条看起来像一整根

  • 通过双轴将分段条叠加在总量条上方

  • 使用“小计”在各区域之间创建间距

操作步骤如下:

将“区域”和“细分”放在列,“销售额”分别拖到行和“标记”卡的标签,“细分”拖放到颜色,创建一个分组条形图:

使用“小计”给每个区域条形组创建间距。具体教程请通过浏览器访问:https://www.flerlagetwins.com/2021/07/a-little-design-makes-world-of.html

创建计算字段:WINDOW_SUM(SUM([Sales])) 。也可以用 FIXED LOD 替代:{ FIXED [Region]: SUM([Sales]) }

将此字段拖到行,编辑表计算,设置为按区域计算每个细分市场的销售总额。

在灰条的标记卡中,移除颜色和标签字段,改为浅灰色,最大化条形尺寸:

再次使用“小计”设置灰色大条形的间距,创建双轴并同步轴。注意:你可能要调整行上两个度量的顺序,确保彩色分段条显示在灰色总量条的上方。

为灰条添加标签。由于每个区域有三根灰条(对应三个细分市场),我们只需要在中间那根上显示标签。因此,需创建两个计算字段用于标签显示:

// 区域标签

IF [Segment] = 'Corporate' THEN [Region]

ELSE NULL

END

// 销售额标签

IF MIN([Segment]) = 'Corporate' THEN [Window_Sum]

ELSE NULL

END

将这两个标签字段拖到灰条的标记卡上,调整格式后即可得到最终效果。

这种方法逻辑清晰,便于理解和维护,且可以使用 FIXED LOD 替代表计算,稳定性更高,标签定制也很灵活,可以精确控制显示位置。

不过相较之下,步骤较多,设置相对繁琐,表计算版本在添加标签时可能出现计算中断的问题,通过“小计”实现间距的技巧也需额外学习。如果你熟悉 LOD 表达式,建议优先使用 FIXED 版本来提升稳定性。


结语与相关学习资源

分段总量条形图虽然能有效解决堆叠条形图的比较难题,但由于是相对较创新的图表类型,在实际使用时需要向用户简单说明如何阅读。一旦用户理解了这种图表的逻辑,它的优势就会非常明显。

此外,如果你也想学习创建,建议根据自己的技术水平和具体需求选择合适的方法:

  • 如果追求快速实现,选择方法二

  • 如果追求视觉效果,选择方法一

  • 如果追求稳定性和可维护性,选择方法三

如果通过上述步骤仍无法实现,请访问此处,了解更多操作细节!



优阅达深耕 Tableau 多年,拥有成熟的可视化方法论、项目落地经验与企业级培训体系。我们在 Tableau 领域的核心能力包括:

  • 数据可视化设计:基于业务场景构建清晰、可决策的仪表板,兼顾分析深度与用户体验。

  • 企业级 Tableau 培训体系:覆盖从基础到高级的课程体系,帮助团队快速掌握分析能力与可视化规范。

  • 仪表板优化与重构:提升现有报表的可读性、性能与交互体验,使其更符合业务使用习惯。

  • 分析方法论与最佳实践:为企业建立统一的指标体系、图表规范、可视化模板与数据文化方法论。

  • 端到端项目咨询:从需求分析、数据建模、可视化设计到用户交付,提供完整项目支持。

凭借多年行业实践,优阅达能够帮助企业在 Tableau 上实现更高效的数据分析、更一致的可视化规范与更全面的数据文化建设。

如需免费试用 Tableau,请点击访问此处;如需咨询 Tableau 企业版部署方式,欢迎随时联系优阅达