使用matplotlib繪制并排柱狀圖的實(shí)戰(zhàn)案例
一、概念說明
柱狀圖(bar chart),從相同的橫坐標(biāo)出發(fā),以不同的數(shù)值大小來設(shè)定柱子的高度,進(jìn)而表示無序或有序的定性數(shù)據(jù)間某個(gè)定量指標(biāo)的大小關(guān)系。
示意圖如下:
(1) 在無序的橫坐標(biāo)情景下,我們常常根據(jù)數(shù)值大小降序排布。
(2) 柱狀圖在縱坐標(biāo)上可以有正有負(fù),但必須以基準(zhǔn)的0線開始繪制,否則會(huì)傳遞錯(cuò)誤的視覺信息。
(3) 當(dāng)類別間數(shù)值差異較大/類別較多/類別命名文本較長(zhǎng)時(shí),我們可以考慮將柱形圖逆轉(zhuǎn)90°,即使用條形圖。
(4)如果手中的數(shù)據(jù)是二維定性的情況,可以根據(jù)需求分別選擇堆疊柱狀圖或者并排柱狀圖。
①堆疊柱狀圖:
--- 關(guān)注類0-4的大類總量的對(duì)比
--- 同時(shí)關(guān)注小類a/b占大類的比重
② 并排柱狀圖(案例對(duì)象)
--- 更關(guān)注小類系列1-3在不同大類1-4間的對(duì)比
--- 關(guān)注小類在大類間數(shù)值分布的差異
--- 如果要呈現(xiàn)大類總量信息,可以增加折線圖
二、數(shù)據(jù)展示
在本案例中, 我們是希望使用python編碼,利用其中matplotlib包繪制并排柱狀圖,因此我們需要二維定序數(shù)據(jù)。
根據(jù)我專欄其它的案例呢,還是繼續(xù)使用隨機(jī)選的八座城市,目的是希望了解八座城市小初高學(xué)校數(shù)量對(duì)比(柱狀),以及人口數(shù)情況(折線)。
秉持城市統(tǒng)計(jì)公報(bào)中有就記錄,無就百度的原則,得到以下僅供繪圖的數(shù)據(jù)。
上述excel表格的數(shù)據(jù)分別存放,利用下述代碼我們將其導(dǎo)入
import pandas as pd school_num = pd.DataFrame(pd.read_excel('./小初高學(xué)校個(gè)數(shù).xlsx')) people_num = pd.DataFrame(pd.read_excel('./2020人口普查數(shù)據(jù).xlsx'))
三、圖像繪制
import matplotlib.pyplot as plt import matplotlib as mpl import numpy as np # 中文和正負(fù)號(hào)設(shè)置 mpl.rcParams["font.sans-serif"] = ["SimHei"] mpl.rcParams["axes.unicode_minus"] = False x = np.arange(8) bar_width = 0.3 tick_label = school_num['城市'] plt.figure(figsize=(13,7)) # 柱狀 plt.bar(x, school_num['小學(xué)'], bar_width, align="center", color="#2bb179", label='小學(xué)', alpha=0.5) plt.bar(x+bar_width, school_num['初中'], bar_width, color="b", align="center", label="初中", alpha=0.5) plt.bar(x+bar_width*2, school_num['高中'], bar_width, color="orange", align="center", label="高中", alpha=0.5) # 折線 plt.plot(x+bar_width, people_num['人數(shù)-萬'], color="#ff796c", marker='o', lw=2,label='人口普查數(shù)(萬)') text_x = [x,x+bar_width,x+bar_width*2] text_x = [text_x[i][j] for i in range(3) for j in range(8) ] text_y = [school_num['小學(xué)'],school_num['初中'],school_num['高中']] text_y = [text_y[i][j] for i in range(3) for j in range(8) ] plt.xticks(x+bar_width, tick_label,fontsize=18) plt.yticks(fontsize=18) plt.xlabel("城市",fontsize=20) plt.ylabel("學(xué)校數(shù)量",fontsize=20) plt.legend(fontsize=16) plt.grid() # 柱型加數(shù)字 for x,y,text in zip(text_x,text_y,text_y): plt.text(x-0.12,y+15,str(text),fontsize=12) # plt.savefig(r'./并排柱狀圖示例.png')
plt.bar(橫坐標(biāo)位置,柱子數(shù)值) --- 橫坐標(biāo)位置一般用np.arange(橫坐標(biāo)類別數(shù))得到,因此在并排中,每一個(gè)小類,都要右移窗寬個(gè)單位,如果您覺得緊挨著顯得很密,也可以加0.1讓它們稍稍隔開。
plt.plot 的橫坐標(biāo)我選擇x+bar_width是因?yàn)槲覀冇腥齻€(gè)柱子,我希望折線的原點(diǎn)是對(duì)應(yīng)橫坐標(biāo)居中顯示。
plt.text --- 這一部分是給整幅圖加文字,但具體加在什么位置需要自己指定。
plt.xticks(原名稱,新名稱)
繪制結(jié)果:
希望對(duì)您有所幫助~
總結(jié)
到此這篇關(guān)于使用matplotlib繪制并排柱狀圖的文章就介紹到這了,更多相關(guān)matplotlib繪制并排柱狀圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python裝飾器類方法擴(kuò)展元類管理實(shí)例探究
這篇文章主要為大家介紹了Python裝飾器類方法擴(kuò)展元類管理實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01python將紅底證件照轉(zhuǎn)成藍(lán)底的實(shí)現(xiàn)方法
這篇文章主要介紹了python將紅底證件照轉(zhuǎn)成藍(lán)底,本文給大家分享四種方法通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08Python學(xué)習(xí)筆記之變量與轉(zhuǎn)義符
這篇文章主要介紹了Python學(xué)習(xí)筆記之變量與轉(zhuǎn)義符,本文從零開始學(xué)習(xí)Python,知識(shí)點(diǎn)很細(xì),有共同目標(biāo)的小伙伴可以一起來學(xué)習(xí)2023-03-03基于Python實(shí)現(xiàn)簡(jiǎn)易學(xué)生信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)易學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07Python TCPServer 多線程多客戶端通信的實(shí)現(xiàn)
這篇文章主要介紹了Python TCPServer 多線程多客戶端通信的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12python實(shí)現(xiàn)批量監(jiān)聽頁(yè)面并發(fā)送郵件
這篇文章主要為大家詳細(xì)介紹了python如何實(shí)現(xiàn)自動(dòng)化批量監(jiān)聽頁(yè)面并發(fā)送郵件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11python Web flask 視圖內(nèi)容和模板實(shí)現(xiàn)代碼
這篇文章主要介紹了python Web flask 視圖內(nèi)容和模板實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08Python實(shí)現(xiàn)可視化CSV文件中的數(shù)據(jù)
CSV文件包含許多記錄,數(shù)據(jù)分布在各行和各列中,在這篇文章中,小編主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)可視化CSV文件中的數(shù)據(jù),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11