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