matplotlib绘制常见统计图形(一)
点击上方“超哥的杂货铺”,轻松关注
之前的文章一图入门Matplotlib绘图中我们学习了matplotlib中常见图表元素的绘制方法,所有操作都通过可以调用plt的函数实现。本节继续来学习使用matplotlib中生成各种常见的统计图表。后台回复“统计图一”可以获取本文全部代码。
柱形图
matplotlib中使用bar函数绘制柱形图。如果遇到中文无法显示的问题,可以参考本次推送的次条文章。
参数含义如下:
说明两点。一是上面代码中我们用plt.text
为柱体添加了文字标签。ha
和va
是horizontalalignment
和verticalalignment
的缩写,分别表示水平对齐和垂直对齐,其他参数可以参见下面的链接:
https://matplotlib.org/api/text_api.html#matplotlib.text.Text。
二是关于x传入字符串列表参数替代tick_label。参见下面代码,注意x的值和前面代码的差别,实现的效果是一样的。
水平方向柱形图
水平方向柱形图对应的函数是barh
,参数和bar
是类似的。上面的图改成水平方向的效果如下:
barh
的第一个参数是y轴上标签的位置(或者值),第二个参数是我们要展示的数据。此时需要用height
参数而不是width
来控制柱体的“高度”,相应的数字标签的坐标也需要重新设置,其余的参数和前面一致。
堆积柱形图
堆积柱状图本质上还是柱状图,所以还是使用bar
和barh
函数。但是要在原来的基础上再堆起来一个,所以需要调用两次绘图函数,并且在第二次调用的时候通过bottom
参数和left
参数指定需要堆叠。例子如下:
垂直方向堆积
水平方向堆积
正负堆积
并列柱状图
同堆积柱状图一样,并列柱状图的实现也是需要调用两次bar()
(或者barh()
)函数,不同的是此时需要通过控制x参数(或y参数)使其左右(或上下)并列。
左右并列
上下并列
直方图
柱形图描述的是离散型数据的分布,柱体之间有空隙。直方图则用来展示连续型数据的分布,柱体之间没有空隙。使用hist()
函数绘制直方图。hist函数的主要参数如下表所示:
随机生成一批140到200的数据,表示学生的身高。每10个一组,看它们的分布情况。
频数直方图
频率直方图
在上面代码基础上增加density
参数,设置为True
则可以显示频率直方图。
累计频率直方图
在上面基础上增加cumulative=True
参数,则可以绘制累计分布频率直方图。
水平方向直方图
水平方向的直方图通过orientation=horizontal
参数控制,如下图所示。
堆积直方图
堆积直方图首先要准备好两组数据,并将两组数据进行“合并”成数组的形式,颜色和标签也要进行相应的合并。然后增加stacked=True
参数,参考下面代码:
垂直方向堆积
水平方向堆积
并列直方图
并列直方图只需要在堆积直方图基础上将stacked
改为False
。
垂直方向并列
水平方向并列
分裂式饼图
饼图是用来展示比例分布特征的图形,主要使用pie()
函数来实现。
使用的参数含义如下表所示:
非分裂式饼图
与分列式饼图相比,只需去掉explode
参数即可使饼片不分裂。下面代码同时指定了pctdistance
和labeldistance
控制百分比和文本标签显示的位置,它们的数值是相对于半径而言的。
环形饼图
环形饼图的实现主要是通过控制wedgeprops
参数来实现,它是指组成扇形的饼片对象,可以传入字典参数设置宽度,实现环形效果。如下面代码所示:
给wedgeprops
传入一个字典参数,分别设置了宽度为0.4和边界颜色为白色。其中宽度是参考半径显示的,当设置为和半径一样时,就不会显示环形了。此外还设置了textprops
参数,控制了环形上的文字颜色。
内嵌环形饼图
将饼图进行嵌套,可以显示多组定性数据的比例分布。同前面的堆积图类似,内嵌的环形图也需要通过画两个环形来实现。这里注意要先画大的环,再画小的环,因为后面绘制的会覆盖前面绘制的。我们设置大环半径为1,小环半径为0.7。
接下来我们对上面的内嵌环图进行修饰。
实际上,pie()
函数是有返回值的,分别是饼片列表,文字标签列表,数值标签列表。有了这些返回值,就可以对它的格式进行设置了。
比起前面的图,增加了图例,更改了显示数值的大小和粗细。具体实现的方法是:给pie()
函数设置了返回值,通过setp()
函数设置文字的大小和粗细。图例设置时,指定了图例元素和文字标签,用bbox_to_anchor
将图例显示在饼图之外,四个参数的前两个是图例的起始坐标,后两个是宽度和高度,由于loc
设置为center left
,意味着(0.91,0)
这个点是图例内左边中间的点(可以认为圆心的位置是坐标原点)。最后我们还用前面学习的注释函数标注了内外环对应的果酱品类。这样就显示了两种果酱配料比例的饼状图。
小结
本节我们学习了matplotlib实现柱形图,直方图,饼图的方法,主要有bar()
,hist()
,pie()
三个函数,通过相关参数的设置能够实现不同的效果。后台回复“统计图一”可以获取本文全部代码。
以清净心看世界;
用欢喜心过生活。
超哥的杂货铺,你值得拥有~
长按二维码关注我们
推荐阅读