總結,主要是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'))