Python?matplotlib實戰(zhàn)之氣泡圖繪制
氣泡圖是一種多變量的統(tǒng)計圖表,可以看作是散點圖的變形。
與散點圖不同的是,每一個氣泡都表示三個維度的數(shù)據(jù),除了像散點圖一樣有X,Y軸,氣泡的大小可以表示另一個維度的數(shù)據(jù)。
例如,x軸表示產品銷量,y軸表示產品利潤,氣泡大小代表產品市場份額百分比。
它可以幫助我們發(fā)現(xiàn)變量之間的模式、趨勢和異常值。
通過氣泡的大小和顏色,我們可以同時比較多個變量的值,并且可以快速識別出具有較大或較小數(shù)值的數(shù)據(jù)點。
1. 主要元素
氣泡圖通常用于展示和比較數(shù)據(jù)之間的關系和分布,可以展示三維(X,Y軸,氣泡大?。?,甚至四維數(shù)據(jù)(X,Y軸,氣泡大小,氣泡顏色)之間的關系。
它的主要元素包括:
- 橫軸和縱軸:氣泡圖通常使用橫軸和縱軸來表示兩個變量的值。這些變量可以是數(shù)值型、分類型或時間型。
- 氣泡大?。簹馀輬D通過氣泡的大小來表示第三個變量的值。通常,氣泡的大小與該變量的值成正比,較大的氣泡表示較大的數(shù)值。
- 氣泡顏色:氣泡圖還可以使用顏色來表示第四個變量的值。不同的顏色可以用于區(qū)分不同的數(shù)據(jù)類別或者表示不同的數(shù)值范圍。

2. 適用的場景
氣泡圖適用的分析場景包括:
- 多變量關系分析:氣通過橫軸、縱軸和氣泡大小,可以同時呈現(xiàn)三個變量的信息,幫助我們發(fā)現(xiàn)變量之間的模式、趨勢和相關性。
- 數(shù)據(jù)聚類和分類:氣泡顏色可以用于區(qū)分不同的數(shù)據(jù)類別或者表示不同的數(shù)值范圍。這使得氣泡圖在數(shù)據(jù)聚類和分類分析中非常有用,可以幫助我們識別出不同群組或類別之間的差異和相似性。
- 比較分析:用于比較不同類別或不同時間點的數(shù)據(jù)。通過氣泡的大小和顏色,我們可以直觀地比較多個變量的值,快速識別出具有較大或較小數(shù)值的數(shù)據(jù)點,從而幫助我們理解數(shù)據(jù)的分布和變化情況。
- 異常值檢測:幫助我們快速識別出具有異常數(shù)值的數(shù)據(jù)點。通過比較氣泡的大小和顏色,我們可以發(fā)現(xiàn)與其他數(shù)據(jù)點相比具有明顯不同數(shù)值的數(shù)據(jù),從而幫助我們識別和分析異常情況。
3. 不適用的場景
氣泡圖在以下情況可能不適用:
- 大數(shù)據(jù)集:當數(shù)據(jù)集非常龐大時,氣泡圖可能不適合展示所有數(shù)據(jù)點,因為過多的氣泡可能會導致圖表混亂不清。
- 單變量分析:如果只需要分析單個變量的分布或趨勢,氣泡圖可能過于復雜,不是最佳選擇。
- 離散數(shù)據(jù):如果數(shù)據(jù)是離散的,而不是連續(xù)的數(shù)值型數(shù)據(jù),氣泡圖可能無法有效地展示變量之間的關系。
4. 分析實戰(zhàn)
本次使用氣泡圖分析 2021年中歐之間的貿易數(shù)據(jù)情況。
氣泡圖可以分析三個維度的對比:
- 進口額:橫軸
- 出口額:縱軸
- 進出口總額:氣泡大小
4.1. 數(shù)據(jù)來源
數(shù)據(jù)來源國家統(tǒng)計局公開的數(shù)據(jù),整理好的數(shù)據(jù)可從下面的地址下載:databook.top/nation/A06
用到的三個統(tǒng)計數(shù)據(jù)分別是:
- 中國同歐洲各國(地區(qū))進出口總額:
A06050103.csv - 中國向歐洲各國(地區(qū))出口總額:
A06050203.csv - 中國從歐洲各國(地區(qū))進口總額:
A06050303.csv
fp = "d:/share/data/A06050103.csv" df_total = pd.read_csv(fp) fp = "d:/share/data/A06050203.csv" df_output = pd.read_csv(fp) fp = "d:/share/data/A06050303.csv" df_input = pd.read_csv(fp)
4.2. 數(shù)據(jù)清理
數(shù)據(jù)清理步驟主要包括:
- 提取每個文件中2021年的數(shù)據(jù)
- 去除中歐整體的交易額數(shù)據(jù),只保留和各個國家之間的貿易數(shù)據(jù)
- 合并進出口總額,進口額,出口額到一個數(shù)據(jù)集中
- 過濾多余字符,生成一個表示國家的數(shù)據(jù)列
#提取每個文件中2021年的數(shù)據(jù)
df = df_total[df_total["sj"] == 2021]
#去除中歐整體的交易額數(shù)據(jù),只保留和各個國家之間的貿易數(shù)據(jù)
data = df.loc[2:, ["zbCN", "value"]]
#重新映射列的名稱
data = data.rename(columns={"zbCN":"country", "value": "total"})
#過濾多余字符,生成一個表示國家的數(shù)據(jù)列
data["country"] = data["country"].str.replace("中國同", "", regex=False)
data["country"] = data["country"].str.replace("進出口總額(萬美元)", "", regex=False)
df = df_input[df_input["sj"] == 2021]
#合并進出口總額,進口額,出口額到一個數(shù)據(jù)集中
data["input"] = df.loc[2:, ["value"]]
df = df_output[df_output["sj"] == 2021]
#合并進出口總額,進口額,出口額到一個數(shù)據(jù)集中
data["output"] = df.loc[2:, ["value"]]
data.head(5)
和歐洲的總體交易數(shù)據(jù)位于每個數(shù)據(jù)集的第一行,所用用 loc[2:, ...] 來過濾。
4.3. 分析結果可視化
with plt.style.context("seaborn-v0_8"):
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax.scatter(
data["input"] / 10000,
data["output"] / 10000,
data["total"] / 10000,
c = np.random.rand(len(data)),
cmap="Accent",
alpha=0.6,
)
ax.set_xlabel("進口額(億元)")
ax.set_ylabel("出口額(億元)")
x = np.linspace(0, 1400, 7)
y = x
ax.plot(x, y, '-')
從圖中可以看出:
橫軸是進口額,縱軸是出口額,氣泡越大,進出口總額越大。
中間的藍色線表示進出口額度一樣,可以看出,大部分國家都在藍色線之上,說明我國和大部分歐洲的貿易都是順差。
到此這篇關于Python matplotlib實戰(zhàn)之氣泡圖繪制的文章就介紹到這了,更多相關matplotlib氣泡圖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python numpy二維數(shù)組如何刪除指定行和列
本文展示了如何對數(shù)組進行行列刪除操作,包括刪除單行、單列、多行和多列的方法,通過具體的運行結果展示,讀者可以清晰地了解到如何在不同情況下進行數(shù)據(jù)處理,文章內容實用,適合需要進行數(shù)據(jù)處理的讀者參考學習2024-09-09
python類參數(shù)定義及數(shù)據(jù)擴展方式unsqueeze/expand
本文主要介紹了python類參數(shù)定義及數(shù)據(jù)擴展方式unsqueeze/expand,文章通過圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08
Python實現(xiàn)畫箱線圖展示數(shù)據(jù)分布情況
這篇文章主要介紹了Python實現(xiàn)畫箱線圖展示數(shù)據(jù)分布情況,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
利用Python?Difflib庫強大的文字比較功能快速輕松查重
這篇文章主要介紹了利用Python?Difflib庫強大的文字比較功能快速輕松查重實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01
Python Paramiko實現(xiàn)SSHv2協(xié)議輕松管理遠程服務器
這篇文章主要為大家介紹了Python Paramiko實現(xiàn)SSHv2協(xié)議輕松管理遠程服務器,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01
Python實現(xiàn)對Excel文件中不在指定區(qū)間內的數(shù)據(jù)加以去除的方法
這篇文章主要介紹了基于Python語言,讀取Excel表格文件,基于我們給定的規(guī)則,對其中的數(shù)據(jù)加以篩選,將不在指定數(shù)據(jù)范圍內的數(shù)據(jù)剔除,保留符合我們需要的數(shù)據(jù)的方法,需要的朋友可以參考下2023-08-08
Python爬蟲實現(xiàn)使用beautifulSoup4爬取名言網功能案例
這篇文章主要介紹了Python爬蟲實現(xiàn)使用beautifulSoup4爬取名言網功能,結合實例形式分析了Python基于beautifulSoup4模塊爬取名言網并存入MySQL數(shù)據(jù)庫相關操作技巧,需要的朋友可以參考下2019-09-09
從0到1使用python開發(fā)一個半自動答題小程序的實現(xiàn)
這篇文章主要介紹了從0到1使用python開發(fā)一個半自動答題小程序的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-05-05

