当前位置: 首页 > 后端技术 > Python

matplotlib中简单的条形图你看懂了吗?

时间:2023-03-26 17:30:59 Python

条形图是数据可视化图形中非常基础和常用的图形。这里简单解释一下:条形图又叫长条形图(英文:barchart),又叫条形图(英文:bargraph),bargraph,bargraph,histogram,bargraph是统计的图的变量是一个矩形的长度。直方图用于比较两个或多个值(在不同时间或不同条件下),只有一个变量,通常用于较小数据集的分析。条形图也可以水平排列或多维表示。那么正常的条形图是什么样的呢?什么时候!什么时候!什么时候!下图是这样的:先把图片高亮了,接下来我们研究一下图片是怎么画的,我们来看看原始数据长什么样子:其实画图的过程和画图很像一个折线图,只是使用了绘制函数不同,绘制柱状图的函数plt.bar():由于这只是最简单的柱状图,其实柱状图的函数plt.bar()有很多参数可以探索的设置,类似于折线图函数plt.plot()的探索,有兴趣的小朋友可以自行探索。条形图按照条形的长度排序显示当然,其他设置也是可以的。比如上图中的线条高低不均。这是因为x轴上的数据是按照学校名称排序的,所以可以吗?按最高分排序?也就是让所有的矩形按照从高到矮或者从矮到高的顺序排列?当然可以!这里需要强调的是,条形的高度排列等信息来源于原始数据。如果要改变条形的顺序,需要改变绘图的源数据!将原始数据倒序排序后,截取前十位的数据赋值给data_yuwen,传入绘图函数plt.bar()作为新的数据源,绘制出来的图片自然会不一样。我们先来看看数据长什么样子:这个数据源绘制的图如下。由于绘制图形所用的数据是按降序排列的,所以生成条形图的条形也会按降序显示:很多时候,我们常见的条形图还有另一种呈现形式,即水平条形图.大多数比较流行的动态条形图也是水平条形图。那么水平条形图呢?画画呢?理解plt.bar()的主要参数其实并不难,只要知道主要参数在plt.bar()函数中的作用即可!条形图函数中主要有五个参数,分别是x、height、width、bottom、orientation。其中,x控制每条bar在x轴方向的位置,height控制每条bar的长度,width控制每条bar的宽度,bottom控制每条bar在y轴方向的起始位置。orientation控制条的方向,是垂直还是水平,默认是垂直。通过一个小例子理解这些参数的作用:上面几行代码输出的图形如下:比较代码和实际输出的条形图,各个主要参数的作用是不是一目了然?横条图了解了这些参数的作用后,将竖条图转换成横条图就不难了!需要将所有条在x轴上的位置设置为0,所以所有条都从最左边开始绘制;由于是横条形图,条形的宽度实际上表示数据的大小,width参数在原始数据中设置为中文分数;bottom控制每个bar在y轴方向的起始位置,设置bottom=range(10)来设置每个bar在y轴的起始位置不同,避免bar重叠;height控制的是每个bar在y轴方向的长度。条形图横向设置后,y轴的长度就失去了测量数据的意义,直接设置一个常量即可;最后设置bar的方向为horizo??ntal,即orientation="horizo??ntal"。提示:数据和标签必须匹配,即plt.bar()的关键数据必须与plt.yticks()提取的标签一一对应。一旦不匹配,整个图表显示的结果就是错误的结果!上面代码生成的条形图如下:感觉上面生成横条形图的方法有点绕,和人们的习惯认知有点不一样。绘制横条图是否需要改变自己的习惯性认知?你知道有多反人类吗?当然不知道。事实上,有一种更简单的方法来绘制水平条形图。之所以一开始没有直接使用这种简单的方法,就是想让大家体验一下条形图参数的灵活设置。而如果我能理解更复杂的方法,那么理解和使用简单的方法就更难了!不卖了,我们来认识一下类似plt.bar()功能。plt.barh()函数是专门用来绘制水平条形图的函数。主要参数有:y控制y轴显示的标签的来源width控制横条的长度,即条形比较高度时使用的数据源width需要设置的参数主要就是这三个,比用plt画水平条形图简单多了。一样的头发对不对?以后如果需要绘制水平条形图,尽量使用plt.barh()函数。毕竟是专门用来绘制这类图表的,简单易用。不过,实际工作中对条形图的需求并不仅限于这些。比如例子只显示各个学校的中文成绩。有时需要将各个科目的分数同时显示在一个条形图中,有时需要绘制堆叠的条形图来显示每个科目的分数和总分。这些图应该怎么画?其实只要理解了各个参数的含义,画出这些图是不成问题的。至于怎么画,我们看下一章分解!