Matplotlib條形圖之分組條形圖和堆疊條形圖詳解
分組條形圖
拓展一下問題復(fù)雜度:使用水平條形圖展示每位員工前三個月的銷售額。此時,我們需要將每位員工的銷售額按月分組,分別繪制條形圖進行展示。
import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] # 用來正常顯示中文標簽 plt.rcParams['axes.unicode_minus'] = False # 用來正常顯示負號 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)造橫坐標 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軸標簽 plt.ylabel(u'月度銷售額(萬元)') # 添加標題 plt.title(u'員工第一季度銷售額對比') # 添加刻度標簽 plt.xticks(np.arange(4) + bar_width, member) # 添加圖例 plt.legend() plt.xlim(-0.5, 4.5) plt.show()
分組條形圖比簡單條形圖的復(fù)雜之處在于,在放數(shù)據(jù) x
軸坐標和刻度位置時,需要進行額外的計算和調(diào)整。在執(zhí)行坐標的計算時,推薦使用 numpy ,因為它支持廣播機制,向量化的算術(shù)運算更加簡單。例如,上例中在設(shè)置第二個和第三個條形的 x
軸坐標時,我們使用了 np.arange(4) + bar_width
和 np.arange(4) + bar_width * 2
,而利用 Python 列表實現(xiàn)將十分復(fù)雜。
堆疊條形圖
堆疊條形圖是分組條形圖展示的另一種形式,它把分類的數(shù)據(jù)堆疊在一起,顯得更簡約緊密,同時提供了求和信息。在實現(xiàn)上,繪制的思路與條形圖相似,不過前者是垂直偏移,后者是水平偏移。
import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] # 用來正常顯示中文標簽 plt.rcParams['axes.unicode_minus'] = False # 用來正常顯示負號 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軸標簽 plt.ylabel(u'月度銷售額(萬元)') # 添加標題 plt.title(u'員工第一季度銷售額對比') # 添加刻度標簽 plt.xticks(np.arange(4), member) # 添加圖例 plt.legend() plt.xlim(-0.5, 4.5) plt.show()
這里有兩點非常關(guān)鍵:一是 botom
選項的使用讓數(shù)據(jù)在該基礎(chǔ)之上有一個偏移;二是 NumPy 模塊 array()
函數(shù)的使用,將列表類型的數(shù)據(jù)轉(zhuǎn)換為 ndarray
,以便元素級別(向量化)運算。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
py3nvml實現(xiàn)GPU相關(guān)信息讀取的案例分析
這篇文章主要介紹了py3nvml實現(xiàn)GPU相關(guān)信息讀取,此時就可以考慮使用py3nvml這樣的工具,針對于GPU任務(wù)執(zhí)行的過程進行細化的分析,有助于提升GPU的利用率和程序執(zhí)行的性能,需要的朋友可以參考下2022-01-01Python中defaultdict與lambda表達式用法實例小結(jié)
這篇文章主要介紹了Python中defaultdict與lambda表達式用法,結(jié)合實例形式分析了Python中defaultdict與lambda表達式的功能、使用方法及相關(guān)注意事項,需要的朋友可以參考下2018-04-04Jupyter Notebook添加代碼自動補全功能的實現(xiàn)
這篇文章主要介紹了Jupyter Notebook添加代碼自動補全功能的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Android基于TCP和URL協(xié)議的網(wǎng)絡(luò)編程示例【附demo源碼下載】
這篇文章主要介紹了Android基于TCP和URL協(xié)議的網(wǎng)絡(luò)編程,結(jié)合實例形式分析了Android網(wǎng)絡(luò)編程的通信原理、實現(xiàn)步驟與相關(guān)操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2018-01-01用Python實現(xiàn)換行符轉(zhuǎn)換的腳本的教程
這篇文章主要介紹了用Python實現(xiàn)換行符轉(zhuǎn)換的腳本的教程,代碼非常簡單,包括一個對操作說明的功能的實現(xiàn),需要的朋友可以參考下2015-04-04python GUI庫圖形界面開發(fā)之PyQt5樹形結(jié)構(gòu)控件QTreeWidget詳細使用方法與實例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)PyQt5樹形結(jié)構(gòu)控件QTreeWidget詳細使用方法與實例,需要的朋友可以參考下2020-03-03