前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matplotlib绘制常见统计图形(一)

matplotlib绘制常见统计图形(一)

作者头像
超哥的杂货铺
发布2020-07-27 16:28:38
1.6K0
发布2020-07-27 16:28:38
举报
文章被收录于专栏:超哥的杂货铺超哥的杂货铺

之前的文章一图入门Matplotlib绘图中我们学习了matplotlib中常见图表元素的绘制方法,所有操作都通过可以调用plt的函数实现。本节继续来学习使用matplotlib中生成各种常见的统计图表。后台回复“统计图一”可以获取本文全部代码。

柱形图

matplotlib中使用bar函数绘制柱形图。如果遇到中文无法显示的问题,可以参考本次推送的次条文章。

参数含义如下:

说明两点。一是上面代码中我们用plt.text为柱体添加了文字标签。havahorizontalalignmentverticalalignment的缩写,分别表示水平对齐和垂直对齐,其他参数可以参见下面的链接:

https://matplotlib.org/api/text_api.html#matplotlib.text.Text。

二是关于x传入字符串列表参数替代tick_label。参见下面代码,注意x的值和前面代码的差别,实现的效果是一样的。

水平方向柱形图

水平方向柱形图对应的函数是barh,参数和bar是类似的。上面的图改成水平方向的效果如下:

barh的第一个参数是y轴上标签的位置(或者值),第二个参数是我们要展示的数据。此时需要用height参数而不是width来控制柱体的“高度”,相应的数字标签的坐标也需要重新设置,其余的参数和前面一致。

堆积柱形图

堆积柱状图本质上还是柱状图,所以还是使用barbarh函数。但是要在原来的基础上再堆起来一个,所以需要调用两次绘图函数,并且在第二次调用的时候通过bottom参数和left参数指定需要堆叠。例子如下:

  • 垂直方向堆积
  • 水平方向堆积
  • 正负堆积
并列柱状图

同堆积柱状图一样,并列柱状图的实现也是需要调用两次bar()(或者barh())函数,不同的是此时需要通过控制x参数(或y参数)使其左右(或上下)并列。

  • 左右并列
  • 上下并列
直方图

柱形图描述的是离散型数据的分布,柱体之间有空隙。直方图则用来展示连续型数据的分布,柱体之间没有空隙。使用hist()函数绘制直方图。hist函数的主要参数如下表所示:

随机生成一批140到200的数据,表示学生的身高。每10个一组,看它们的分布情况。

频数直方图

频率直方图

在上面代码基础上增加density参数,设置为True则可以显示频率直方图。

累计频率直方图

在上面基础上增加cumulative=True参数,则可以绘制累计分布频率直方图。

水平方向直方图

水平方向的直方图通过orientation=horizontal参数控制,如下图所示。

堆积直方图

堆积直方图首先要准备好两组数据,并将两组数据进行“合并”成数组的形式,颜色和标签也要进行相应的合并。然后增加stacked=True参数,参考下面代码:

  • 垂直方向堆积
  • 水平方向堆积
并列直方图

并列直方图只需要在堆积直方图基础上将stacked改为False

  • 垂直方向并列
  • 水平方向并列
分裂式饼图

饼图是用来展示比例分布特征的图形,主要使用pie()函数来实现。

使用的参数含义如下表所示:

非分裂式饼图

与分列式饼图相比,只需去掉explode参数即可使饼片不分裂。下面代码同时指定了pctdistancelabeldistance控制百分比和文本标签显示的位置,它们的数值是相对于半径而言的。

环形饼图

环形饼图的实现主要是通过控制wedgeprops参数来实现,它是指组成扇形的饼片对象,可以传入字典参数设置宽度,实现环形效果。如下面代码所示:

wedgeprops传入一个字典参数,分别设置了宽度为0.4和边界颜色为白色。其中宽度是参考半径显示的,当设置为和半径一样时,就不会显示环形了。此外还设置了textprops参数,控制了环形上的文字颜色。

内嵌环形饼图

将饼图进行嵌套,可以显示多组定性数据的比例分布。同前面的堆积图类似,内嵌的环形图也需要通过画两个环形来实现。这里注意要先画大的环,再画小的环,因为后面绘制的会覆盖前面绘制的。我们设置大环半径为1,小环半径为0.7。

接下来我们对上面的内嵌环图进行修饰。

实际上,pie()函数是有返回值的,分别是饼片列表,文字标签列表,数值标签列表。有了这些返回值,就可以对它的格式进行设置了。

比起前面的图,增加了图例,更改了显示数值的大小和粗细。具体实现的方法是:给pie()函数设置了返回值,通过setp()函数设置文字的大小和粗细。图例设置时,指定了图例元素和文字标签,用bbox_to_anchor将图例显示在饼图之外,四个参数的前两个是图例的起始坐标,后两个是宽度和高度,由于loc设置为center left,意味着(0.91,0)这个点是图例内左边中间的点(可以认为圆心的位置是坐标原点)。最后我们还用前面学习的注释函数标注了内外环对应的果酱品类。这样就显示了两种果酱配料比例的饼状图。

小结

本节我们学习了matplotlib实现柱形图,直方图,饼图的方法,主要有bar()hist()pie()三个函数,通过相关参数的设置能够实现不同的效果。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 超哥的杂货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 水平方向柱形图
  • 堆积柱形图
  • 并列柱状图
  • 直方图
  • 频率直方图
  • 累计频率直方图
  • 水平方向直方图
  • 堆积直方图
  • 并列直方图
  • 分裂式饼图
  • 非分裂式饼图
  • 环形饼图
  • 内嵌环形饼图
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档