第6章  排序与对比(部分与部分)

排序是最普遍的分析需求,对应的条形图(或者柱状图)也因此成为使用最为广泛的可视化图形。本章介绍排序问题类型对应的主要图形,及其相关的可视化常识,包括

1、条形图的构成要素与矩阵条形图

2、多个度量坐标轴的处理方式——双轴、多度量轴

3、不同度量类型的可视化表述方式

4、度量坐标轴的综合设置——对数、倒数、零点、刻度等

5、以条形图为底色的高级图形:靶心图、甘特图

6.1 基本条形图与多离散维度条形图

“排序”通常隐藏在各种业务问题之中,比如“不同产品的销售额”“各地区的客户数量”等,有时候明显、有时候隐晦。分析师需要敏捷地捕捉领导的意图,或者基于业务场景作出恰当的推测。

通常,只要问题的主干是由 “离散字段”和“聚合度量”构成的,默认对应的图形,就是条形图,它建立在“第二字段分类”原理基础上:

离散生成标题、连续创建坐标轴

最简单的条形图由离散字段对应的标题、连续的聚合字段生成的坐标轴以及以长度代表大小的条形组成;结合对结果的排序。

图 6‑1 典型条形图的基本样式

那如果问题中包含多个离散字段,或者多个聚合度量呢?这里先说多个离散字段,总结一句话:

多个离散维度字段并排构成分区,交叉构成矩阵

1)离散字段并排构成分区

比如要绘制“各类别、各细分的销售额”,一种方法是把离散的“类别”和“细分”前后并排放在视图中,结果如图6-2左侧所示,每个类别同时对应了细分字段的三个数据值,最小的单位称之为“单元格”,而多个单元格构成的上一级就称之为“区”,随着维度字段增加,“区”可以持续嵌套,最终构成整个数据视图。

图 6‑2 并排离散维度构成分区

而要在上述“单元格”-“区”的结构中完成排序,就需要为所有维度字段构成的数据表创建共同的坐标系——或者称之为“对比的公共基准”,因此就需要把连续字段添加到维度字段所在“行”相对的位置“列”。如图6-3左侧所示。

图 6‑3 为数据表增加连续坐标轴

而如果把连续聚合字段添加到“单元格”字段细分之后,虽然还是同一个轴,但是不在一个空间中,就失去了可比性,如图6-3右侧所示。

单一连续字段构成的坐标轴,相当于一维空间;它的本质就是把每个单元格都叠加放在一个一维的标尺上。

多个离散维度构成分区,分区中有一种特殊形式——构成分区的前后多个字段相互没有交集,比如“类别、子类别、产品名称”“国家、省份、城市”。如图6-4所示,这种字段结构称之为“分层结构”,通常用于逐步归因的探索分析。在Tableau Desktop中,通过拖曳多个字段构成“分层结构”,有助于在视图中灵活完成字段的折叠和钻取。

图 6‑4 分层结构是一种特殊的多个离散维度的关系

2)多个离散字段交叉构成矩阵

多个离散字段交叉构成“矩阵”。何为矩阵?在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合;于此相类似,分析中把字段的交叉关系成为“矩阵”,如图6-5所示。

图 6‑5 离散字段交叉构建矩阵

“离散字段生成标题”,说的是展现的样式;而“多个离散字段交叉生成矩阵”,说的是空间,再与坐标轴结合,就称之为“条形图矩阵”。如图6-5右侧所示。

在条形图矩阵中,连续的聚合字段生成坐标轴,那哪个维度字段和它相邻,哪个字段与它相对呢?这取决于问题的字段关系。

比如“各个细分市场,不同类别的销售额总和”,要对比的是“不同类别的销售额总和”,因此“类别”和“销售额”字段相对,从而为多个类别创建公共的坐标轴基准。而“各个细分市场”没有对比关系,因此细分字段与坐标轴可以相邻——细分作为“区”字段。

3)实例:日历矩阵条形图

基于上述的常识介绍,这里介绍一个在日历矩阵中做条形图对比的案例。某日,一位制造业客户咨询,想要在“日历”中看到车间“早中晚”三个班组的产量情况。

日历是典型的矩阵图形,它是由“第几周”和“星期几”两个离散字段构成的——Tableau Desktop中可以在日期字段上选择或者使用DATEPART函数完成。如图6-6所示。

图 6‑6 使用两个离散日期交叉创建矩阵

接下来,如何把班组字段和产量字段加入到这个矩阵?这就需要分析客户需求。

首先,“每个工作日,各周的产量”是没有意义的,而分析“每周,每个工作日的产量”才是有意义的,因此“产量”字段应该与“周数”相邻(周构建分区)、与“工作日”相对。如图6-7左侧所示。

图 6‑7 在日历矩阵中增加产量和班组

接下来,增加“班组”字段,相当于把每天的条形图一分为三,从“每天的产量对比”变成“每天、每个班组的产量对比”,因此“班组”字段放在“工作日”之后,如图6-7右侧所示。

接下来,做必要的视图改进:增加月份筛选器、按照“早中晚”设置“班组”的默认排序、通过颜色增强班组的可识别性、隐藏坐标轴改为标签显示、必要时增加其他字段到“工具提示”甚至“画中画”,就可以完成“日历矩阵条形图”了。

图 6‑8 增加必要的修饰,完成可视化[1]

按照类似的逻辑,结合后面折线图和饼图,甚至可以在日期矩阵中创建折线图、饼图等多种样式。

4)离散维度作为结构性要素:堆叠条形图

离散维度除了生成标题和矩阵,还可以作为分析的关键背景使用——也就是作用弱于行列上的字段,但又参与到视图中,强于“隐藏于”工具提示之中的参考信息。

比如在“各个类别的销售额”条形图中,希望让领导进一步看到不同细分市场的情况,但又不想破坏视图本身——更准确的说,细分字段作为视图的结构性要素出现,作为第二重表达要素。如图6-9所示。

图 6‑9 堆叠条形图:在视图单一维度条形图中增加结构性要素

这种称之为“堆叠条形图”(stacked bar chart),它的最大优势在于明确地区分了两个可视化层次:主视图焦点突出(行列字段构成)、结构性要素明显(通过标记颜色传递)。这样既保持了原有条形图的样式,又增加了视图的丰富程度,因此是大数据业务分析中至关重要的条形图样式。

在此基础上,堆叠条形图还有进一步的改进空间,比如如何增加各类别的合计销售额标签、如何把结构性占比转化为主视图焦点。

由于堆叠条形图已经改变了数据聚合的层次(这里是“类别*细分”),因此默认显示标签只会显示“每个类别*细分”的销售额合计,更高聚合的标签需要引用更高层次的聚合(“类别”层次)。最简单的更高聚合是表计算,而参考线都是表计算的“化身”,因此通过在单元格添加参考线就可以显示类别合计,如图6-10左侧所示。

图 6‑10 在“类别*细分”层次增加更高聚合的标签

由于表计算属于典型的高级计算,对应SQL中的“开窗函数”,初学者容易陷入到“图形合并”之中,如图6-10右侧所示,使用“双轴图”(详见6.2小节介绍)增加“每个类别的聚合”。本书不推荐这种方法,它增加了视图的复杂性和性能负担,而且阻碍了这个视图进一步的发挥空间。

如果领导很清楚类别的销售情况,希望重点关注“各个细分在不同类别的占比的对比”呢?

此时问题就发生了实质变化,关注焦点从此前的“类别的排序”变成了“细分在各类别的占比的排序”,作为对比的坐标轴首先就要改变。通过表计算把绝对值坐标轴转化为“百分比坐标轴”,是高级分析的基本技能。如图6-11所示。

图 6‑11 使用表计算把绝对值坐标轴转化为百分比坐标轴[1]

在本章6.4小节坐标轴的处理中,还会重题这个话题。


[1] Tableau表计算对应SQL窗口函数,属于高级计算的一部分,初学者需要时间。


[1] 数据采用Tableau默认的“超市数据”,“班组”字段基于“类别”复制而来。

6.2 包含多个度量坐标轴的条形图

1)按照字段重要性递减的多种布局方式

2)考虑字段关系的双轴和多轴布局方式

3)多个绝对值字段的对比与包含逻辑

6.3 字段类型对多度量组合的影响

1)字段类型与视图框架

2)字段类型与颜色

3)字段类型与表达方式

6.4 坐标轴的调整

6.5 以条形图为底色的高级图

喜乐君 · Jan 8, 2021