条形图
条形图具有丰富的表现形式,常见的类型包括单组条形图,多组条形图,堆积条形图和对称条形图等。
单组条形图
条形图的每种表现形式都可以绘制成垂直条形图或水平条形图,以单组条形图的两种绘制方式为例。
垂直条形图
importmatplotlib.pyplotaspltdata= [10., 20., 5., 15.] plt.bar(range(len(data)), data) plt.show()
Tips:plt.plot()函数的作用是:接收两个参数,包括每个条形的x坐标和每个条行的高度。
通过可选参数 width,pyplot.bar() 提供了一种控制条形图中条状宽度的方法:
importmatplotlib.pyplotaspltdata= [10., 20., 5., 15.] plt.bar(range(len(data)), data, width=0.5) plt.show()
水平条形图
如果更喜欢水平条形外观,就可以使用 plt.barh() 函数,在用法方面与 plt.bar() 基本相同,但是修改条形宽度(或者在水平条形图中应该称为高度)的参数需要使用 height:
importmatplotlib.pyplotaspltdata= [10., 20., 5., 15.] plt.barh(range(len(data)), data, height=0.5) plt.show()
多组条形图
当需要比较不同年份相应季度的销量等此类需求时,我们可能需要多组条形图。
importnumpyasnpimportmatplotlib.pyplotaspltdata= [[10., 20., 30., 20.],[40., 25., 53., 18.],[6., 22., 52., 19.]] x=np.arange(4) plt.bar(x+0.00, data[0], color='b', width=0.25) plt.bar(x+0.25, data[1], color='g', width=0.25) plt.bar(x+0.50, data[2], color='r', width=0.25) plt.show()
堆积条形图
通过使用 plt.bar() 函数中的可选参数,可以绘制堆积条形图。
importmatplotlib.pyplotasplty_1= [3., 25., 45., 22.] y_2= [6., 25., 50., 25.] x=range(4) plt.bar(x, y_1, color='b') plt.bar(x, y_2, color='r', bottom=y_1) plt.show()
Tips:plt.bar()函数的可选参数bottom允许指定条形图的起始值。
可以结合 for 循环,利用延迟呈现机制堆叠更多的条形:
importnumpyasnpimportmatplotlib.pyplotaspltdata=np.array([[5., 30., 45., 22.], [5., 25., 50., 20.], [1., 2., 1., 1.]]) x=np.arange(data.shape[1]) foriinrange(data.shape[0]): plt.bar(x, data[i], bottom=np.sum(data[:i], axis=0)) plt.show()
对称条形图
一个简单且有用的技巧是对称绘制两个条形图。例如想要绘制不同年龄段的男性与女性数量的对比:
importnumpyasnpimportmatplotlib.pyplotaspltw_pop=np.array([5., 30., 45., 22.]) m_pop=np.array( [5., 25., 50., 20.]) x=np.arange(4) plt.barh(x, w_pop) plt.barh(x, -m_pop) plt.show()
图中女性人口的条形图照常绘制。然而,男性人口的条形图的条形图的条形图向左延伸,而不是向右延伸。可以使用数据的负值来快速实现对称条形图的绘制。