當前位置: 華文世界 > 科技

數據視覺化:探索氣泡圖(bubble charts)的力量

2024-02-16科技

氣泡圖(bubble charts),也稱為泡泡圖,是展示數據的最引人註目的方式之一。它展示了前兩個資訊部份之間的關系。此外,它還突出顯示了另一個重要部份,這個部份不總是直接依賴於前兩個部份。

當試圖檢查多個數據點之間的相關性時,使用氣泡圖是很有用的。它們的視覺特性加速了對數據之間關系的辨識,通常比查閱統計表格更容易理解。

何時使用氣泡圖?

向觀眾展示氣泡圖可能會有些困難,因為他們必須理解很多資訊。因此,在使用氣泡圖或圖表時,需要仔細考慮何時比其缺點更好。氣泡圖適用於顯示許多維度,而散點圖最適合顯示兩個維度。

氣泡圖或地圖適用於比較具有多個數據集的數據點。這些數據集可以包括人口規模、人口統計、年齡和性別。這些圖表或地圖允許進行清晰的三向視覺比較。

相反,當額外的維度無法為其增加足夠的價值以證明包含它們時,避免使用氣泡圖是不錯的選擇。

上面的氣泡圖結合了人均 GDP、預期壽命、人口數量和時間等多個維度的資訊,透過泡泡的大小、位置和顏色來直觀地展示了不同國家在不同時間點的經濟發展水平胡人民生活水平的關系。

  • 泡泡大小維度 :每個泡泡的大小代表了對應國家的人口數量,使用了平方根函式進行了縮放,以便更好地展示不同國家之間的人口規模差異。
  • x 軸維度 :x 軸表示了國家的人均 GDP。
  • y 軸維度 :y 軸表示了國家的預期壽命。
  • 顏色維度 :每個泡泡的顏色代表了對應國家的數據所屬的年份。1990 年數據使用了紅色調的顏色漸變,而 2015 年數據則使用了藍色調的顏色漸變,以便區分兩個時間點的數據。
  • 類似氣泡圖的圖表

    許多其他圖表和視覺化工具類似於氣泡圖。它們可以同時顯示許多不同的資訊,幫助我們理解事物之間的關系,並使模式更加清晰。其中一些圖表包括:

  • 散點圖( Scatter Plots )
  • 人們常常使用散點圖來展示兩個或多個維度的數據。散點圖中的每個標記代表一個數據點,使其適用於視覺化二維數據。散點圖是一種簡單的圖表,將配對數據顯示在x軸和y軸上。散點圖上的點所代表的觀察結果與兩個變量的值相對應。散點圖可以顯示變量之間的關系,這些關系可以是線性或非線性的,可以是正的或負的。它們對於發現數據中隱藏的離群值和模式非常有用。

  • 泡泡地圖( Bubble Maps )
  • 泡泡地圖與氣泡圖類似。它們使用地圖作為背景,並在地圖的特定位置顯示數據點為泡泡。此外,泡泡的大小可以在散點圖中編碼第三個變量。兩個位置數值變量表示地理座標(即緯度和經度),我們可以透過在背景地圖上放置泡泡來建立泡泡地圖。泡泡地圖是散點地圖的擴充套件,可以幫助解決可能出現的過度繪制困難。如果散點地圖在某一區域有很多點,可能很難看到它們所有。我們可以簡化透過使用一個泡泡來顯示該區域的總點數。同樣,我們可以使用多個泡泡來表示圖表上的不同區域。

  • 填充圓圈圖( Packed Circle Charts )
  • 填充圓圈圖是一種使用圓圈來顯示階層或巢狀類別的數據視覺化型別。一個大圓圈包圍圖表中的小圓圈,每個小圓圈顯示主類別的一個較小部份。在完整的圓圈圖中,唯一顯示的是泡泡所代表的數位或頻率。在沒有任何實際位置軸的情況下,它們會密集排列。

    繪制氣泡圖時幾點註意事項

  • 根據值調整氣泡區域的大小 :氣泡圖常見錯誤是將點的直徑或半徑按第三個變量的值進行縮放,使得一個點的值是另一個點的兩倍時,其面積會成四倍增長,造成視覺誤解。因此,制作氣泡圖時應確保氣泡的面積與第三個變量的值相匹配,保持大小比例一致,以準確反映數據。需要根據數據調整點的大小,確保圖表的可讀性和準確性。
  • 限制數據點的數量: 氣泡圖通常采用透明顯示,以展示所有點在很小時的重疊情況。盡管制作氣泡圖沒有具體的數據使用指南,但在使用時需要註意。如果繪圖過於密集,可以進行數據總結或選擇其他圖表型別來展示數據,以確保圖表的解析度和可讀性。
  • 清晰的圖例和標簽: 在氣泡圖中,標簽和圖例是非常重要的元件。氣泡的大小和位置本身可能無法清晰展示它們的重要性,因此需要額外的資訊來澄清圖表的比例和背景。缺少這些基本元件可能導致圖表被誤解或完全被忽視的風險,因此包括它們可以幫助觀眾正確使用圖表並更有效地理解數據。
  • 揭示明顯的模式: 在使用氣泡圖時,確保氣泡的大小反映了值,這樣可以清晰地展示資訊給他人。在建立圖表時,應嘗試不同的數據排列方式,確保最重要的兩件事或連線在水平胡垂直位置上。如果第三個變量對主要觀點沒有太多幫助,則不應使用氣泡圖,而應選擇更簡單的圖表。
  • 處理負值: 在氣泡圖中使用數據集不受任何特定指導方針的約束。因此,我們必須使用其他方法來顯示負值。一種方法是對正數使用填充圓圈,對負數使用未填充的圓圈,另一種選擇是對正數和負數使用不同的顏色。氣泡圖主要強調變化的大小和方向,因此可以有效地顯示財務損失或績效下降等重要數據。
  • 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範例。