Matplotlib條形圖之分組條形圖和堆疊條形圖詳解
分組條形圖
拓展一下問(wèn)題復(fù)雜度:使用水平條形圖展示每位員工前三個(gè)月的銷售額。此時(shí),我們需要將每位員工的銷售額按月分組,分別繪制條形圖進(jìn)行展示。
import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] # 用來(lái)正常顯示中文標(biāo)簽 plt.rcParams['axes.unicode_minus'] = False # 用來(lái)正常顯示負(fù)號(hào) member = [u'小紅', u'小王', u'小李', u'小張'] sales_jan = [30, 42, 25, 35] # 一月銷售額 sales_feb = [60, 55, 10, 27] # 二月銷售額 sales_mar = [40, 20, 5, 68] # 三月銷售額 bar_width = 0.2 # 設(shè)置分組條形的寬度 # 繪圖 plt.bar(range(4), sales_jan, label=u'一月', width=bar_width, align='center', color='steelblue', alpha=0.7) # 也可以使用numpy模塊的arange()函數(shù)構(gòu)造橫坐標(biāo) plt.bar(np.arange(4) + bar_width, sales_feb, label=u'二月', color='indianred', alpha=0.7, width=bar_width) plt.bar(np.arange(4) + bar_width * 2, sales_mar, label=u'三月', color='green', alpha=0.7, width=bar_width) # 添加Y軸標(biāo)簽 plt.ylabel(u'月度銷售額(萬(wàn)元)') # 添加標(biāo)題 plt.title(u'員工第一季度銷售額對(duì)比') # 添加刻度標(biāo)簽 plt.xticks(np.arange(4) + bar_width, member) # 添加圖例 plt.legend() plt.xlim(-0.5, 4.5) plt.show()
分組條形圖比簡(jiǎn)單條形圖的復(fù)雜之處在于,在放數(shù)據(jù) x
軸坐標(biāo)和刻度位置時(shí),需要進(jìn)行額外的計(jì)算和調(diào)整。在執(zhí)行坐標(biāo)的計(jì)算時(shí),推薦使用 numpy ,因?yàn)樗С謴V播機(jī)制,向量化的算術(shù)運(yùn)算更加簡(jiǎn)單。例如,上例中在設(shè)置第二個(gè)和第三個(gè)條形的 x
軸坐標(biāo)時(shí),我們使用了 np.arange(4) + bar_width
和 np.arange(4) + bar_width * 2
,而利用 Python 列表實(shí)現(xiàn)將十分復(fù)雜。
堆疊條形圖
堆疊條形圖是分組條形圖展示的另一種形式,它把分類的數(shù)據(jù)堆疊在一起,顯得更簡(jiǎn)約緊密,同時(shí)提供了求和信息。在實(shí)現(xiàn)上,繪制的思路與條形圖相似,不過(guò)前者是垂直偏移,后者是水平偏移。
import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] # 用來(lái)正常顯示中文標(biāo)簽 plt.rcParams['axes.unicode_minus'] = False # 用來(lái)正常顯示負(fù)號(hào) member = [u'小紅', u'小王', u'小李', u'小張'] sales_jan = [30, 42, 25, 35] # 一月銷售額 sales_feb = [60, 55, 10, 27] # 二月銷售額 sales_mar = [40, 20, 5, 68] # 三月銷售額 bar_width = 0.2 # 設(shè)置分組條形的寬度 # 繪圖 plt.bar(np.arange(4), sales_jan, label=u'一月', color='steelblue', alpha=0.7) plt.bar(np.arange(4), sales_feb, bottom=sales_jan, label=u'二月', color='indianred', alpha=0.7) plt.bar(np.arange(4), sales_mar, bottom=np.array(sales_jan) + np.array(sales_feb), label=u'三月', color='green', alpha=0.7) # 添加Y軸標(biāo)簽 plt.ylabel(u'月度銷售額(萬(wàn)元)') # 添加標(biāo)題 plt.title(u'員工第一季度銷售額對(duì)比') # 添加刻度標(biāo)簽 plt.xticks(np.arange(4), member) # 添加圖例 plt.legend() plt.xlim(-0.5, 4.5) plt.show()
這里有兩點(diǎn)非常關(guān)鍵:一是 botom
選項(xiàng)的使用讓數(shù)據(jù)在該基礎(chǔ)之上有一個(gè)偏移;二是 NumPy 模塊 array()
函數(shù)的使用,將列表類型的數(shù)據(jù)轉(zhuǎn)換為 ndarray
,以便元素級(jí)別(向量化)運(yùn)算。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
py3nvml實(shí)現(xiàn)GPU相關(guān)信息讀取的案例分析
這篇文章主要介紹了py3nvml實(shí)現(xiàn)GPU相關(guān)信息讀取,此時(shí)就可以考慮使用py3nvml這樣的工具,針對(duì)于GPU任務(wù)執(zhí)行的過(guò)程進(jìn)行細(xì)化的分析,有助于提升GPU的利用率和程序執(zhí)行的性能,需要的朋友可以參考下2022-01-01Python控制瀏覽器自動(dòng)下載歌詞評(píng)論并生成詞云圖
本文主要介紹了如何利用Python控制瀏覽器自動(dòng)把歌詞評(píng)論下載下來(lái),并做成好看的詞云圖。文中的示例代碼講解詳細(xì),感興趣的可以試一試2022-01-01Python中defaultdict與lambda表達(dá)式用法實(shí)例小結(jié)
這篇文章主要介紹了Python中defaultdict與lambda表達(dá)式用法,結(jié)合實(shí)例形式分析了Python中defaultdict與lambda表達(dá)式的功能、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2018-04-04Python Traceback異常代碼排錯(cuò)利器使用指南
這篇文章主要為大家介紹了Python Traceback異常代碼排錯(cuò)利器使用指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01Jupyter Notebook添加代碼自動(dòng)補(bǔ)全功能的實(shí)現(xiàn)
這篇文章主要介紹了Jupyter Notebook添加代碼自動(dòng)補(bǔ)全功能的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Android基于TCP和URL協(xié)議的網(wǎng)絡(luò)編程示例【附demo源碼下載】
這篇文章主要介紹了Android基于TCP和URL協(xié)議的網(wǎng)絡(luò)編程,結(jié)合實(shí)例形式分析了Android網(wǎng)絡(luò)編程的通信原理、實(shí)現(xiàn)步驟與相關(guān)操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2018-01-01用Python實(shí)現(xiàn)換行符轉(zhuǎn)換的腳本的教程
這篇文章主要介紹了用Python實(shí)現(xiàn)換行符轉(zhuǎn)換的腳本的教程,代碼非常簡(jiǎn)單,包括一個(gè)對(duì)操作說(shuō)明的功能的實(shí)現(xiàn),需要的朋友可以參考下2015-04-04python GUI庫(kù)圖形界面開發(fā)之PyQt5樹形結(jié)構(gòu)控件QTreeWidget詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開發(fā)PyQt5樹形結(jié)構(gòu)控件QTreeWidget詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-03-03