在 Matplotlib 中使用的是 bar() 方法,还是先看下 bar() 的语法:
atplotlib.pyplot.bar(left, height, width=0.8, bottom=None, hold=None, data=None, **kwargs) 参数 接收值 说明 默认值left array x 轴; 无
height array 柱形图的高度,也就是y轴的数值; 无
alpha 数值 柱形图的颜色透明度 ; 1
width 数值 柱形图的宽度; 0.8
color(facecolor) string 柱形图填充的颜色; 随机色
edgecolor string 图形边缘颜色 None
label string 解释每个图像代表的含义 无
linewidth(linewidths / lw) 数值 边缘or线的宽度 1
其他详细的用法可以参考官方文档:https://matplotlib.org/api/pyplot_api.html 。
我们还是先来一个简单的示例,数据依然使用上面的数据:
import matplotlib.pyplot as plt import numpy as np # 处理中文乱码 plt.rcParams['font.sans-serif']=['SimHei'] x_data = np.array([2011,2012,2013,2014,2015,2016,2017]) y_data = np.array([58000,60200,63000,71000,84000,90500,107000]) y_data_1 = np.array([78000,80200,93000,101000,64000,70500,87000]) plt.title(label='xxx 公司 xxx 产品销量') plt.bar(x_data, y_data, width=0.5, alpha=0.6, facecolor = 'deeppink', edgecolor = 'darkblue', lw=2, label='产品销量') plt.legend() plt.savefig("bar_demo_1.png")width : 柱子的宽度
alpha : 透明度
facecolor : 柱子填充色
edgecolor : 柱子轮廓色
lw : 柱子轮廓宽度
label : 图例
结果如下:
并排柱状图我们还有一组数据,接下来是两个柱形图并列显示,这里调用的还是 bar() ,只不过需要调整的是柱子的位置:
import matplotlib.pyplot as plt import numpy as np # 处理中文乱码 plt.rcParams['font.sans-serif']=['SimHei'] x_data = np.array([2011,2012,2013,2014,2015,2016,2017]) y_data = np.array([58000,60200,63000,71000,84000,90500,107000]) y_data_1 = np.array([78000,80200,93000,101000,64000,70500,87000]) plt.title(label='xxx 公司 xxx 产品销量') plt.bar(x_data, y_data, width=0.3, alpha=0.6, facecolor = 'pink', edgecolor = 'blue', lw=1, label='产品销量') plt.bar(x_data + 0.3, y_data_1, width=0.3, alpha=0.6, facecolor = 'blue', edgecolor = 'blue', lw=1, label='用户增长数') plt.legend() plt.savefig("bar_demo_2.png")这里比较重要的是 x_data + 0.3 ,相当于把用户量的柱子向右移动了 0.3 ,否则会造成重合。
结果如下:
堆积柱状图还有一种柱形图是堆积柱形图,就是把柱状图堆叠在一起,我们还是通过示例来看:
import matplotlib.pyplot as plt import numpy as np # 处理中文乱码 plt.rcParams['font.sans-serif']=['SimHei'] x_data = np.array([2011,2012,2013,2014,2015,2016,2017]) y_data = np.array([58000,60200,63000,71000,84000,90500,107000]) y_data_1 = np.array([78000,80200,93000,101000,64000,70500,87000]) plt.title(label='xxx 公司 xxx 产品销量') plt.bar(x_data, y_data, width=0.3, alpha=0.6, facecolor = 'pink', edgecolor = 'blue', lw=1, label='产品销量') plt.bar(x_data, y_data_1, bottom=y_data, width=0.3, alpha=0.6, facecolor = 'blue', edgecolor = 'blue', lw=1, label='用户增长数') plt.legend() plt.savefig("bar_demo_3.png")这种堆积柱状图主要是通过参数 bottom 来实现的,含义是底部开始的位置。
结果如下:
横向柱状图其实横向柱状图应该是叫条形图,而且使用的方法也不再是 bar() 了,而是变成了 barh() 。
咦,这个看起来和 bar() 很像嘛,有可能是兄弟关系。
语法如下:
matplotlib.pyplot.barh(y, width, height=0.8, left=None, *,, **kwargs)