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'))