Matplotlib 条形图

条形图或条状图是一种图表或图形,它显示带有矩形条的分类数据,其高度或长度与它们所代表的值成比例。可以垂直或水平绘制条形。

条形图显示了离散类别之间的比较。图表的一个轴显示要比较的特定类别,另一个轴表示测量值。

Matplotlib API提供了bar()函数,可以在MATLAB样式使用以及面向对象的API中使用。与axis对象一起使用的bar()函数的签名如下 -

#Filename:example.py#Copyright:2020ByNhooo#Authorby:www.shangmayuan.com#Date:2020-08-08ax.bar(x,height,width,bottom,align)

该函数使用大小为(x −width = 2; x + width=2; bottom; bottom + height)来绑定矩形创建条形图。

该函数的参数是 -

x - 表示条形的x坐标的标量序列。如果x是条形中心(默认)或左边缘,则对齐控件。height - 标量或标量序列表示条的高度。width - 标量或类似数组,可选。条形的宽度默认为0.8。bottom - 标量或类似数组,可选。条形的y坐标默认为None。align - {'center','edge'},可选,默认:center。

该函数返回包含所有条形的Matplotlib容器对象。以下是Matplotlib条形图的简单示例。它显示了在一所学院提供的各种课程的学生人数。

#Filename:example.py#Copyright:2020ByNhooo#Authorby:www.shangmayuan.com#Date:2020-08-08#!/usr/bin/envpython#coding=utf-8importmatplotlib.pyplotaspltimportnumpyasnpimportmathplt.rcParams['font.sans-serif']=['SimHei']#步骤一(替换sans-serif字体)plt.rcParams['axes.unicode_minus']=False#原文出自【立地货】,商业转载请联系作者获得授权,非商业请保留原文链接:fig=plt.figure()ax=fig.add_axes([0,0,1,1])langs=['C','C++','Java','Python','PHP']students=[23,17,35,29,12]ax.bar(langs,students)plt.show()

执行上面示例代码,得到以下结果 -

执行代码结果

当比较多个数量和更改一个变量时,可能需要一个条形图,其中有一个颜色的条形图用于一个数量值。

可以通过使用条形的厚度和位置来绘制多个条形图。数据变量包含三个系列的四个值。以下脚本将显示四个条形图的三个条形图。这些条的厚度为0.25个单位。每个条形图将从前一个移动0.25个单位。数据对象是一个多元图,包含过去四年在工程学院的三个分支中通过的学生数量。

#Filename:example.py#Copyright:2020ByNhooo#Authorby:www.shangmayuan.com#Date:2020-08-08#!/usr/bin/envpython#coding=utf-8importmatplotlib.pyplotaspltimportnumpyasnpimportmathplt.rcParams['font.sans-serif']=['SimHei']#步骤一(替换sans-serif字体)plt.rcParams['axes.unicode_minus']=False#原文出自【立地货】,商业转载请联系作者获得授权,非商业请保留原文链接:data=[[30,25,50,20],[40,23,51,17],[35,22,45,19]]X=np.arange(4)fig=plt.figure()ax=fig.add_axes([0,0,1,1])ax.bar(X+0.00,data[0],color='b',width=0.25)ax.bar(X+0.25,data[1],color='g',width=0.25)ax.bar(X+0.50,data[2],color='r',width=0.25)plt.show()

执行上面示例代码,得到以下结果 -

执行代码结果

堆积条形图堆叠表示彼此顶部的不同组的条形图。结果为条形图的高度显示组的组合结果。

pyplot.bar()函数的可选bottom参数指定条的起始值。它不是从零运行到一个值,而是从底部到值。第一次调用pyplot.bar()绘制蓝条。第二次调用pyplot.bar()绘制红色条形图,蓝色条形图的底部位于红色条形图的顶部。

#Filename:example.py#Copyright:2020ByNhooo#Authorby:www.shangmayuan.com#Date:2020-08-08#!/usr/bin/envpython#coding=utf-8importmatplotlib.pyplotaspltimportnumpyasnpimportmathplt.rcParams['font.sans-serif']=['SimHei']#步骤一(替换sans-serif字体)plt.rcParams['axes.unicode_minus']=False#原文出自【立地货】,商业转载请联系作者获得授权,非商业请保留原文链接:N=5menMeans=(20,35,30,35,27)womenMeans=(25,32,34,20,25)ind=np.arange(N)#thexlocationsforthegroupswidth=0.35fig=plt.figure()ax=fig.add_axes([0,0,1,1])ax.bar(ind,menMeans,width,color='r')ax.bar(ind,womenMeans,width,bottom=menMeans,color='b')ax.set_ylabel('分数')ax.set_title('按组和性别分数')ax.set_xticks(ind,('G1','G2','G3','G4','G5'))ax.set_yticks(np.arange(0,81,10))ax.legend(labels=['男','女'])plt.show()

执行上面示例代码,得到以下结果 -

执行代码结果

编辑于2024-05-20 15:22