matplotlib繪制單個、多個、堆積、雙向柱形圖


總結,主要是bar以及barh的用法,畫堆疊圖時還得注意一下數據類型,是否都是可加(數值型還是字符型,又或者是list等),如果不是,就是要np.array轉化,還有豎圖和橫圖間隔的設置,width和height,最后,數據都是最后的結果,數據值個數不能太多,一般不超過10個,如果是連續性數據,請先處理,然后再畫圖

一、單個柱形圖

#構造數據
import pandas as pd 
import numpy as np
sabf = (27,53,81,103,138)
sa = (29,57,89,113,141)
ffd = (30,63,94,119,152)
index = np.arange(5)
import matplotlib.pyplot as plt

單個直方圖

plt.bar(index,sabf,width=0.5,color='green')

 

 橫向直方圖

plt.barh(index,sabf,color='green',height=0.5)

 

 記住,bar用width寬,barh用height

二、多個柱形圖

主要在於x坐標的增加,設置好x坐標,其他都好辦

bar_width=0.2
plt.bar(index,sabf,color='green',width=bar_width)
plt.bar(index+bar_width,sa,color='blue',width=bar_width)
plt.bar(index+bar_width+bar_width,ffd,color='yellow',width=bar_width)
plt.legend(('sabf','sa','ffd'))
plt.xticks(index + 3 * bar_width / 3,('100', '200', '300', '400', '500'))

 

 

三、堆積柱形圖

主要重點在於bottom參數的設置

plt.bar(index,sabf,color='green',bottom=0)
plt.bar(index,sa,color='blue',bottom=sabf)
plt.bar(index,ffd,color='yellow',bottom=np.array(sabf)+np.array(sa))  #要注意這個是否可以廣播,也即是說是否可加(數學上的可加),不然會報錯
plt.legend(('sabf','sa','ffd'))
plt.xticks(index,('100', '200', '300', '400', '500'))

 

 

四、雙向柱形圖

主要在於barh的使用,以及例外一個要乘(-1)

plt.barh(index,sabf,color='green',height=0.5)
plt.barh(index,-np.array(sa),color='yellow',height=0.5)
plt.legend(('sabf','sa'))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM