气泡图

什么是气泡图?

气泡图是散点图的扩展,用于观察三个数值变量之间的关系。气泡图中的每个点对应一个数据点,每个点的变量值通过水平位置、垂直位置和点的大小来表示。

Bubble chart example one.

上述示例气泡图描绘了2018年美国橄榄球联盟常规赛中各支球队每场比赛的得分情况。每个气泡代表一支球队的表现。气泡的水平位置表示每场比赛中对手对这支球队的场均得分,垂直位置表示这支球队每场比赛的场均得分。每个气泡的大小表示每支球队获得的胜利数量,较大的气泡对应较高的胜率。(平局算作半场胜利。)

从图表中我们可以看到,球队得分的变化比对手得分的变化要大得多,但两者之间并没有特别强的相关性。相反,图表的主要启示来自于第三个变量:随着球队得分增多且对手得分减少(向左上角发展),球队会赢得更多胜利,这符合人们的自然预期。

"气泡图"这个名称有时也用来指代另一种图表类型——紧凑圆圈图。这是一种完全不同的图表类型,将在文章末尾简要讨论。

何时应该使用气泡图

和散点图一样,气泡图主要用于描绘和展示数值变量之间的关系。然而,通过增加标记大小作为维度,可以比较三个变量而不是仅仅两个。在一个气泡图中,我们可以进行三种不同的两两比较(X 与 Y,Y 与 Z,X 与 Z),以及一个整体的三向比较。要获得相同数量的洞察,需要多个双变量散点图;即便如此,推断数据点之间的三向关系也不会像在气泡图中那么直接。

Three bubble charts example 2.

上面的三个散点图显示了与原始示例气泡图相同的数据。虽然从这个系列图表中更容易获取每个队伍的具体获胜次数,但三个变量之间的关系在气泡图中表述得更为清晰。

AVG_POINTS_AGAINST AVG_POINTS_FOR WINS
26.56 14.06 3
26.44 25.88 7
17.94 24.31 10
23.38 16.81 6
... ... ...

气泡图是由一个具有三列的数据表创建的。两列对应每个点的水平和垂直位置,第三列则表示每个点的大小。表格中的每一行都会绘制一个点。

使用气泡图的最佳实践

按值调整气泡面积

一个容易犯的错误是将点的直径或半径按第三变量的值进行缩放。当执行这种缩放时,一个值是另一个点两倍的点最终会拥有四倍的面积,使其看起来比实际应有的值大得多。

相反,确保气泡的面积与第三变量的值相对应。在上述相同情况下,一个值是另一个点两倍的点应该具有 sqrt(2) = 1.41 倍的直径或半径,这样其面积就是较小点的两倍。

Bubble scaling.

根据你创建气泡图的方式,你可能需要缩放你的数据,以考虑数据值如何映射到点的大小。许多可视化工具会自动将值与面积匹配,但要小心那些将值与直径或半径匹配的情况。

限制绘图点的数量

气泡图通常在数据点上使用透明度绘制,因为重叠现象比所有点都极小的情况更容易发生。这种重叠也意味着在保持图表可读性的同时,可以绘制的数据点数量存在限制。

Bubble overlaps.

如果没有透明度,较小的数据点将无法在较大的数据点中显现。

对于数据集是否适合使用气泡图,并没有硬性规定,但在创建气泡图时需要留意这一点。如果出现过多的重叠,那么可能需要考虑如何汇总数据或选择其他图表类型来表示数据。减小气泡大小可以帮助在点之间提供一些物理间隔,但这也会使从气泡大小中读取数值变得更加困难。

包含图例

作为另一个建议,建议在图表中包含图例或其他关键信息,以显示不同气泡大小如何对应于第三个变量的值。由于坐标轴上的刻度标记,根据水平或垂直长度和位置来评估和比较值相对容易。气泡大小的图例与刻度标记对第三个变量的作用相同。

如果你正在使用具有交互功能的可视化应用程序,那么开启该功能是个不错的选择,这样当选择或悬停在单个数据点上时,数值就会显示出来。对于印刷品,标注关键点是个好主意,这样可以提高气泡图的沟通能力。

呈现清晰趋势

如果你正在考虑使用气泡图向他人展示信息,请确保它能通过点的大小作为价值指标清晰地呈现趋势。在制作图表时,尝试调整变量的绘制顺序。最重要的两个变量或最关键的关系应该分别放在垂直轴和水平轴上。如果第三个变量对图表所讲述的故事没有显著贡献,则避免使用气泡图,而应采用更简单、额外的图表形式。

包含负值

如果一个变量取负值,那么它不能直接分配给点大小作为编码:毕竟,形状怎么能有负面积呢?需要将额外信息编码到形状大小中,以表示负值。例如,你可以用实心圆圈表示正值,空心圆圈表示负值。作为另一种选择,你可以用一种颜色表示正点,用一种不同的、独特的颜色表示负点。

Negative bubble values.

当然,首先应该检查这些编码是否有意义:这个变量或许更适合分配给其中一个的位置轴!尽量避免用气泡来编码负值,除非这确实能为图表增加价值。

与气泡图相关的其他图表

散点图

气泡图当然是以散点图为基础构建的,只是通过点的大小增加了第三个变量。然而,值得一提的是,除了点的大小之外,还可以通过其他点编码方式在散点图中添加第三个变量。其中最常见的是颜色。当我们有一个分类的第三个变量(取离散值,可能有序也可能无序)时,我们可以为每个点的类别分配一个独特的色调。实际上,我们可以将色调与点的大小结合使用作为第四个变量,但应谨慎使用,因为它可能导致信息过载——与第四个变量相比,之前关于清晰展示趋势的注意事项被大大放大了。

颜色也可以用作数值变量的编码方式。如果我们有一个配色方案,其中颜色具有连续的关系(例如从浅到深),我们可以用颜色来表示第三个变量的值,而不是大小。请注意,基于颜色的值感知与使用大小时具有类似的限制,因此在使用颜色时,与使用点大小一样,图例也同样必要。

Scatter plot with hue example.

气泡图

如果这两个位置变量代表地理坐标(即纬度和经度),我们可以在背景地图上叠加气泡,从而得到气泡地图。气泡地图是散点地图的一个有趣扩展,有助于解决散点地图在过度堆叠方面的潜在问题。如果一个散点地图在一个区域内有太多点,以至于它们的数量难以看清,我们可以用一个气泡来替换它们,这个气泡会报告该区域内点的总数。

Craigslist bubble map.

虽然这个来自 Craigslist 租房搜索的例子没有标准的气泡缩放,但它仍然展示了气泡如何帮助总结可能密集堆积的点。

填充圆环图

紧凑圆环图(又名圆形打包图、气泡云)是一种表面看起来像气泡图的图表类型。虽然紧凑圆环图中的气泡像以前一样表示数值或频率,但这里只有一个变量:气泡密集地聚集在一起,没有任何实际的位置轴。

Packed cicle example.

在某种程度上,你可以将密集圆形图视为由圆盘组成的条形图。然而,这也暴露了密集圆形图的弱点:与气泡图一样,它难以从无序的气泡大小中获取确切值或排名。由于它们使用位置来编码值,你通常最好坚持使用柱状图、棒棒糖图或点图来传达信息。密集圆形图的优势在于,如果有很多组要绘制,圆形排列可以比将每个类别显示在长线上更加紧凑。然而,你也可以将较小的值合并到“其他”组中,以在更传统的图表中减少空间。

通常情况下,圆形分装图倾向于出现在分层环境中,其中较小的圆圈被放置在较大的圆圈内部,以展示整体如何在多个层级上被划分为部分。即便在这种情况下,圆形分装图在表示比例方面与其他图表类型(如树状图)相比也显得有些低效,因此圆形分装图的优势主要在于美观而非实用性。

可视化工具

根据可视化方法的不同,气泡图有时被视为一种独立的图表类型,但有时则是通过一个总体的散点图选项创建的。要注意某些工具如何解释用于编码点大小的值:如果它们将值解释为点的半径或直径,则需要进行转换,以确保点大小能真实反映值。