百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

matplotlib绘制常见统计图形(一) matplotlib统计出现次数

qiyuwang 2024-10-10 11:28 21 浏览 0 评论

之前的文章一图入门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()三个函数,通过相关参数的设置能够实现不同的效果。后台回复“统计图一”可以获取本文全部代码。

相关推荐

# 安装打开 ubuntu-22.04.3-LTS 报错 解决方案

#安装打开ubuntu-22.04.3-LTS报错解决方案WslRegisterDistributionfailedwitherror:0x800701bcError:0x80070...

利用阿里云镜像在ubuntu上安装Docker

简介:...

如何将Ubuntu Kylin(优麒麟)19.10系统升级到20.04版本

UbuntuKylin系统使用一段时间后,有新的版本发布,如何将现有的UbuntuKylin系统升级到最新版本?可以通过下面的方法进行升级。1.先查看相关的UbuntuKylin系统版本情况。使...

Ubuntu 16.10内部代号确认为Yakkety Yak

在正式宣布Ubuntu16.04LTS(XenialXerus)的当天,Canonical创始人MarkShuttleworth还非常开心的在个人微博上宣布Ubuntu下个版本16.10的内...

如何在win11的wsl上装ubuntu(怎么在windows上安装ubuntu)

在Windows11的WSL(WindowsSubsystemforLinux)上安装Ubuntu非常简单。以下是详细的步骤:---...

Win11学院:如何在Windows 11上使用WSL安装Ubuntu

IT之家2月18日消息,科技媒体pureinfotech昨日(2月17日)发布博文,介绍了3中简便的方法,让你轻松在Windows11系统中,使用WindowsSubs...

如何查看Linux的IP地址(如何查看Linux的ip地址)

本头条号每天坚持更新原创干货技术文章,欢迎关注本头条号"Linux学习教程",公众号名称“Linux入门学习教程"。...

怎么看电脑系统?(怎么看电脑系统配置)

要查看电脑的操作系统信息,可以按照以下步骤操作,根据不同的操作系统选择对应的方法:一、Windows系统通过系统属性查看右键点击桌面上的“此电脑”(或“我的电脑”)图标,选择“属性”。在打开的...

如何查询 Linux 内核版本?这些命令一定要会!

Linux内核是操作系统的核心,负责管理硬件资源、调度进程、处理系统调用等关键任务。不同的内核版本可能支持不同的硬件特性、提供新的功能,或者修复了已知的安全漏洞。以下是查询内核版本的几个常见场景:...

深度剖析:Linux下查看系统版本与CPU架构

在Linux系统管理、维护以及软件部署的过程中,精准掌握系统版本和CPU架构是极为关键的基础操作。这些信息不仅有助于我们深入了解系统特性、判断软件兼容性,还能为后续的软件安装、性能优化提供重要依据。接...

504 错误代码解析与应对策略(504错误咋解决)

在互联网的使用过程中,用户偶尔会遭遇各种错误提示,其中504错误代码是较为常见的一种。504错误并非意味着网站被屏蔽,它实际上是指服务器在规定时间内未能从上游服务器获取响应,专业术语称为“Ga...

猎聘APP和官网崩了?回应:正对部分职位整改,临时域名可登录

10月12日,有网友反映猎聘网无法打开,猎聘APP无法登录。截至10月14日,仍有网友不断向猎聘官方微博下反映该情况,而猎聘官方微博未发布相关情况说明,只是在微博内对反映该情况的用户进行回复,“抱歉,...

域名解析的原理是什么?域名解析的流程是怎样的?

域名解析是网站正常运行的关键因素,因此网站管理者了解域名解析的原理和流程对于做好域名管理、解决常见解析问题,保障网站的正常运转十分必要。那么域名解析的原理是什么?域名解析的流程是怎样的?接下来,中科三...

Linux无法解析域名的解决办法(linux 不能解析域名)

如果由于误操作,删除了系统原有的dhcp相关设置就无法正常解析域名。  此时,需要手动修改配置文件:  /etc/resolv.conf  将域名解析服务器手动添加到配置文件中  该文件是DNS域名解...

域名劫持是什么?(域名劫持是什么)

域名劫持是互联网攻击的一种方式,通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的地址从而实现用户无法访问目标网站的目的。说的直白些,域名劫持,就是把互...

取消回复欢迎 发表评论: