气泡图(bubble charts),也称为泡泡图,是展示数据的最引人注目的方式之一。它展示了前两个信息部分之间的关系。此外,它还突出显示了另一个重要部分,这个部分不总是直接依赖于前两个部分。
当试图检查多个数据点之间的相关性时,使用气泡图是很有用的。它们的视觉特性加速了对数据之间关系的识别,通常比查阅统计表格更容易理解。
何时使用气泡图?
向观众展示气泡图可能会有些困难,因为他们必须理解很多信息。因此,在使用气泡图或图表时,需要仔细考虑何时比其缺点更好。气泡图适用于显示许多维度,而散点图最适合显示两个维度。
气泡图或地图适用于比较具有多个数据集的数据点。这些数据集可以包括人口规模、人口统计、年龄和性别。这些图表或地图允许进行清晰的三向视觉比较。
相反,当额外的维度无法为其增加足够的价值以证明包含它们时,避免使用气泡图是不错的选择。
上面的气泡图结合了人均 GDP、预期寿命、人口数量和时间等多个维度的信息,通过泡泡的大小、位置和颜色来直观地展示了不同国家在不同时间点的经济发展水平和人民生活水平的关系。
类似气泡图的图表
许多其他图表和可视化工具类似于气泡图。它们可以同时显示许多不同的信息,帮助我们理解事物之间的关系,并使模式更加清晰。其中一些图表包括:
人们常常使用散点图来展示两个或多个维度的数据。散点图中的每个标记代表一个数据点,使其适用于可视化二维数据。散点图是一种简单的图表,将配对数据显示在x轴和y轴上。散点图上的点所代表的观察结果与两个变量的值相对应。散点图可以显示变量之间的关系,这些关系可以是线性或非线性的,可以是正的或负的。它们对于发现数据中隐藏的离群值和模式非常有用。
泡泡地图与气泡图类似。它们使用地图作为背景,并在地图的特定位置显示数据点为泡泡。此外,泡泡的大小可以在散点图中编码第三个变量。两个位置数值变量表示地理坐标(即纬度和经度),我们可以通过在背景地图上放置泡泡来创建泡泡地图。泡泡地图是散点地图的扩展,可以帮助解决可能出现的过度绘制困难。如果散点地图在某一区域有很多点,可能很难看到它们所有。我们可以简化通过使用一个泡泡来显示该区域的总点数。同样,我们可以使用多个泡泡来表示图表上的不同区域。
填充圆圈图是一种使用圆圈来显示层次结构或嵌套类别的数据可视化类型。一个大圆圈包围图表中的小圆圈,每个小圆圈显示主类别的一个较小部分。在完整的圆圈图中,唯一显示的是泡泡所代表的数字或频率。在没有任何实际位置轴的情况下,它们会密集排列。
绘制气泡图时几点注意事项
Python示例
1990年/2015年世界主要国家的人均收入与人均寿命数据:
import pandas as pdimport plotly_express as pxdf = pd.DataFrame([ [28604, 77, 17096869, 'Australia', '1990'],[31163, 77.4, 27662440, 'Canada', '1990'], [1516, 68, 1154605773, 'China', '1990'],[13670, 74.7, 10582082, 'Cuba', '1990'], [28599, 75, 4986705, 'Finland', '1990'],[29476, 77.1, 56943299, 'France', '1990'], [31476, 75.4, 78958237, 'Germany', '1990'],[28666, 78.1, 254830, 'Iceland', '1990'], [1777, 57.7, 870601776, 'India', '1990'],[29550, 79.1, 122249285, 'Japan', '1990'], [2076, 67.9, 20194354, 'North Korea', '1990'],[12087, 72, 42972254, 'South Korea', '1990'], [24021, 75.4, 3397534, 'New Zealand', '1990'],[43296, 76.8, 4240375, 'Norway', '1990'], [10088, 70.8, 38195258, 'Poland', '1990'],[19349, 69.6, 147568552, 'Russia', '1990'], [10670, 67.3, 53994605, 'Turkey', '1990'],[26424, 75.7, 57110117, 'United Kingdom', '1990'], [37062, 75.4, 252847810, 'United States', '1990'],[44056, 81.8, 23968973, 'Australia', '2015'], [43294, 81.7, 35939927, 'Canada', '2015'],[13334, 76.9, 1376048943, 'China', '2015'], [21291, 78.5, 11389562, 'Cuba', '2015'],[38923, 80.8, 5503457, 'Finland', '2015'], [37599, 81.9, 64395345, 'France', '2015'],[44053, 81.1, 80688545, 'Germany', '2015'], [42182, 82.8, 329425, 'Iceland', '2015'],[5903, 66.8, 1311050527, 'India', '2015'], [36162, 83.5, 126573481, 'Japan', '2015'],[1390, 71.4, 25155317, 'North Korea', '2015'], [34644, 80.7, 50293439, 'South Korea', '2015'],[34186, 80.6, 4528526, 'New Zealand', '2015'], [64304, 81.6, 5210967, 'Norway', '2015'],[24787, 77.3, 38611794, 'Poland', '2015'], [23038, 73.13, 143456918, 'Russia', '2015'],[19360, 76.5, 78665830, 'Turkey', '2015'], [38225, 81.4, 64715810, 'United Kingdom', '2015'],[53354, 79.1, 321773631, 'United States', '2015'] ])df.columns=["Income","Life_Expectancy","Population","Country","Year"]df
1990/2015年健康与财富世界地图(气泡图)
fig = px.scatter(df, x="Income", y="Life_Expectancy", size="Population", size_max=60, color="Year", hover_name="Country", range_y=[50, 90], labels={"Income": "人均收入(美元)", "Life_Expectancy": "人均寿命"}, title="1990/2015年健康与财富世界地图(气泡图)", opacity=1)fig.update_xaxes(matches=None)# Plot the figurefig.show()
以上代码使用了 Plotly Express 库创建了一个散点图(scatter plot)。散点图显示了数据集 df 中的不同国家在 x 轴(收入)、y 轴(预期寿命)上的分布情况。散点的大小代表了该国家的人口数量,而颜色则代表了不同的年份。鼠标悬停在散点上时会显示该国家的名称。
介绍了气泡图的优点以及何时使用气泡图的指南。气泡图作为一种视觉化工具,有助于展示多个维度之间的关系,尤其适用于比较具有多个数据集的数据点。然而,在使用时需要注意调整气泡大小、限制数据点数量、提供清晰的标签和图例,并根据需要处理负值。最后,提供了一个1990年/2015年的健康与财富世界地图(气泡图)的Python示例。