堆叠条形图

什么是堆叠条形图?

堆叠条形图(又名堆叠条形图)将标准的条形图 从查看一个分类变量上的数值扩展到两个。在标准条形图中,每个条形都分为若干个子条形,首尾相接堆叠,每个子条形对应第二个分类变量的一个级别。

上面的堆叠条形图描绘了一个虚构健身零售商在特定时间段内的收入,涉及两个分类变量:店铺位置和部门。主要的分类变量是店铺位置:从排序后的总体条形高度可以看出,Cherry St. 位置的收入最高,Apple Rd. 最低。每个条形图都根据第二个分类变量——部门的级别进行细分。我们可以看到,对于大多数位置,服装的销售量远大于设备,而设备又大于配饰。Strawberry Mall 位置的收入中,设备所占的比例似乎较低,而 Peach St. 的设备份额则较大。

什么时候应该使用堆叠条形图


标准条形图的主要目的是比较分类变量不同级别的数值。每个分类变量的级别都绘制一个条形图,每个条形图的长度表示数值。堆叠条形图也能实现这一目标,但它还针对第二个目标。

当我们关心基于第二个分类变量的每个主要条形的相对分解时,我们想要切换到堆叠条形图。每个条形现在由多个子条形组成,每个子条形对应于一个次要分类变量的级别。堆叠条形的总长度与之前相同,但现在我们可以看到次要组如何贡献于这个总长度。

分类变量的顺序

在构建堆叠条形图时,一个重要的考虑因素是决定两个分类变量中哪一个将是主要变量(决定主要轴位置和整体条形长度),哪一个将是次要变量(决定每个主要条形如何细分)。最重要的变量应该是主要变量;使用领域知识和具体的分类变量类型来决定如何分配你的分类变量。

例如,如果一个分类变量表示时间数据(例如 20XX-1 月、20XX-2 月、20XX-3 月等),那么这通常会是主要分类变量的一个明显选择。在一般层次结构中,接下来是其他有序或数值变量,例如年龄范围(18-24 岁、25-34 岁、35-44 岁等)或排名分数(从 1 到 7 的同意程度)。纯标签式的分类变量(例如性别、部门、地理区域)通常不太适合作为主要变量考虑。作为另一个考虑因素,具有更多层级的变量通常更适合作为主要变量;我们希望将次要层级的数量限制在一个相对较小的范围内,以使堆叠分解更易于阅读。

最终,这些经验法则只是大致的指导。领域知识、可视化目标以及实验将显示每种情况下分类变量的最佳层次结构。例如,如果我们感兴趣的是按产品部门查看年龄分解,那么将纯分类变量(部门)设为主要变量是一个很好的理由。

数据结构示例

商店 服装 装备 配饰
樱桃街 8261.68 4810.34 1536.57
草莓购物中心 7875.87 3126.58 2019.81
桃子街 4990.23 4923.48 1472.59
青柠大道 4658.42 2955.55 1390.55
苹果路 3952.00 1858.46 917.90

堆叠条形图的数据通常格式化为一个具有三列或更多列的表格。第一列中的值表示主要分类变量的水平。第一列之后的每一列将对应于次要分类变量的一个水平。主单元的值表示图中每个子条形的长度。条形图是按行构建的:当生成堆叠条形图时,每个主要条形的总长度将是其对应行的总和。

对于某些工具,创建堆叠条形图的一个中间步骤可能需要在每一行中计算累积和。最右侧的列将包含主条形的长度。子条形由连续列之间的值差定义。对于需要这种数据表格结构的工具,要注意负值,因为负值可能导致条形之间出现重叠或间隙,从而歪曲数据。

商店 服装 + 设备 + 配饰
樱桃街 8261.68 13092.02 14628.59
草莓购物中心 7875.87 11002.45 13022.26
桃子街 4990.23 9913.71 11386.30
青柠大道 4658.42 7613.97 9004.52
苹果路 3952.00 5810.46 6728.36

使用堆叠条形图的最佳实践


堆叠条形图本质上应遵循其构成基础的标准条形图的最佳实践。然而,添加第二个分类变量为创建有效的堆叠条形图带来了额外的考虑因素。

保持零基线

当标准条形图遇到负值时,相应的条形会绘制在基线以下或左侧(取决于条形是垂直还是水平排列)。在堆叠条形图中,可以执行类似的表示,只需将条形向负方向堆叠即可。

然而,当正条形和负条形结合在一起时,条形的总长度不再与条形的总价值相对应。当出现这种情况时,最好在条形上方绘制一条额外的线或一系列点,以显示真实总价值:正条形长度与负条形长度之间的差异。

当次级值在每个子组中始终为正或负时,很容易保持每个主条形内子条形的顺序一致。然而,如果多个子组在不同时间在正负之间切换,由于条形会在基线上下切换,将无法保持良好的顺序。在这种情况下,最好考虑使用其他图表类型来展示数据。一个折线图 或分组条形图可以提供更一致的个体组展示效果,尽管它们会失去查看主总计的能力。如果确实需要看到总计,总可以在另一个图中展示——不必觉得需要在单个图中展示所有内容。

类别级别的排序

使用堆叠条形图时,你需要考虑两个分类变量的类别级别的顺序。标准条形图的经验法则可以应用于这两个变量:除非级别有内在顺序,否则按从大到小的顺序排列条形。

为了阐明关于次要分类变量的这一规则,这一决定应基于每个分类级别的整体大小。让每个主条形图以完全相同的顺序堆叠是个好主意。保持这种一致性使得更容易将子条形图与次要分类级别关联起来。这种一致性还意味着最先绘制的组始终位于基线,使其大小易于阅读。因此,如果对于某个特定的次要变量级别跟踪精确值很重要,那么其子条形图应该放在基线上。

选择有效的颜色

虽然标准的条形图一般建议使用单一颜色,但对于堆叠条形图来说,使用颜色来区分次要变量的级别是不可避免的。关键是要确保分配给每个类别级别的颜色板选择  与变量类型相匹配:纯分类变量使用定性色板,而对于具有有意义顺序的变量则使用顺序色板或发散色板。

常见误用


在堆叠面积图中解释单个组的值

虽然比较主要分类变量的不同级别的总数值很简单,但使用次要分类变量来衡量其他部分或进行比较就不那么直接了。如果我们想看到次要级别的变化,这只能针对与基线进行比较的级别轻松完成。对于所有其他次要级别,它们的基线将发生偏移,这使得判断子条形长度如何随主要条形变化变得更加困难。在下面的示例中,很难看出中间的黄色组实际上随着时间的推移略有下降。

即使尝试比较每个主要条形内的子条形也可能很困难。即使遵循按总体大小排序次要类别级别的指南,这也不能保证它们会在特定的主要条形内按大小排序。在上面的同一张图中,很难看出紫色“西部”组在规模上何时超过黄色“中部”组。

记住,堆叠条形图的一个标准目标是对次要分类变量进行相对判断,而精确判断并不那么重要。如果比较子组很重要,那么使用折线图或分组条形图等其他图表类型是合理的。

常见的堆叠条形图选项


水平堆叠条形图

和标准条形图一样,堆叠条形图中的条形可以水平排列(主要类别在垂直轴上)或垂直排列(主要类别在水平轴上)。水平排列具有之前相同的优势,可以轻松显示长类别名称而不需要旋转或截断。

百分比堆积条形图

堆叠条形图的另一种常见选项是百分比,或相对频率堆叠条形图。在这里,每个主要条形图的高度都被调整为相同,因此每个子条形图在每个主要类别级别上成为整体的一个百分比贡献。这使我们无法比较主要类别级别的总计,但允许我们更好地分析次要组的相对分布。将每个主要条形图的高度固定为相同,也在图表顶部创建了一个新的基线,可以在主要条形图之间跟踪第二个子组。

值注释

一种缓解从长度比较子条形大小问题的方法是给每个条形添加标注来指示其大小。然而,这会增加一些视觉上的杂乱,因此要小心考虑是否使用。确保堆叠条形图与您的主要可视化目标一致,否则选择其他图表类型。

相关图

饼图

当只有一个条形需要绘制时,可以考虑使用饼图作为堆叠条形图的替代方案。然而,当你想要比较两个或更多主要组时,通常情况下应避免使用饼图,就像堆叠条形图通常需要做的那样。由于饼图通常没有任何刻度标记,因此更难准确判断饼内和饼间的比例。饼图还仅限于相对或百分比比较,而不是绝对值。此外,多个堆叠条形图通常比多个饼图占用更少的空间,从而更容易查看完整数据。

面积图

当主要分类变量来自一个连续特征,例如时间段时,我们可以选择使用堆叠面积图而不是堆叠条形图。堆叠面积图倾向于强调变化和趋势,而不是确切的数字,当需要绘制大量条形图时,它读起来也更加清晰。此外,面积图的连贯性有助于强调主要变量的连续性。

分组柱状图

如果我们把每个主要条形图分离出来,并将子条形图分组放置在基线上,那么我们就得到了一个分组条形图 ,也称为簇状条形图。使用分组条形图,我们牺牲了观察每个主要类别级别总体的能力,从而更精确地理解次级类别在每个主要类别级别中的排名。

马里梅克图表

当我们的数值变量表示某种整体,且这种整体被两个分类变量分成不同部分时,我们可以选择一种不太常见的图表类型——Marimekko 图表(又名 Mekko 图表、马赛克图、矩阵图)。Marimekko 图表本质上是一个被分成两个连续方向的堆叠条形图的方形或矩形。与标准的绝对值堆叠条形图相比,每个主条形现在将具有相同的长度但不同的宽度。请注意,这使得与堆叠条形图相比,在 Marimekko 图表中解释子条形更加困难,因为我们不能仅仅看条形长度,而需要看方框面积。

可视化工具

堆叠条形图是可视化工具中常见的图表类型,它们基于普遍的标准条形图构建。根据所使用的工具,堆叠条形图可能只是基本条形图类型的一部分,由数据表中存在多个值列自动创建。工具还可能将堆叠条形图和分组条形图放在一起,并提供选择它们之间的选项。

当工具不提供堆叠条形图作为内置图表类型时,可以通过在彼此之上生成多个条形图来创建一个。这时就需要进行累积总和的计算或添加逻辑来处理负值。

堆叠条形图是用于数据可视化的多种图表类型之一。您可以通过阅读我们关于基本图表类型如何选择数据可视化类型的文章,或浏览图表分类中的全部文章来了解更多信息。