氣泡圖(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範例。