python绘制简单直方图(质量分布图)的方法

这篇文章总的讲述了一下绘制频数直方图和频率直方图的绘制方法,通过图像进行比较,发现各个直方图的优缺点,以便在工程中进行运用

Posted in Python onApril 21, 2022

直方图,又称质量分布图,是一种统计报告图,由一系列高度不等的纵条或线段表示数据分布情况。用横轴表示数据类型,纵轴表示分布情况。直方图是数值数据分布的精确图形表示。绘制连续性的数据,展示一组或多组数据的分布状况。

直方图的绘制和条形图有些相似,需要把plt.bar()修改成plt.hist(),更改图形的拟合方式,即可绘制直方图。例如你获取到了250部电影的数量,他们的时长都在80-140分钟,如何呈现电影的时长分布情况呢?

老规矩,上代码:

'''
    组数=极差/组距
'''
from matplotlib import pyplot as plt
from matplotlib import font_manager
import random
 
a = [random.randint(80,140) for i in range(250)]
print(a)
print(max(a)-min(a))
 
# 计算组数
d = 3  # 组距
num_bins = (max(a)-min(a))//d
 
# 设置图形大小
plt.figure(figsize=(20, 8), dpi=80)
plt.hist(a, num_bins)
 
# 设置x轴刻度
plt.xticks(range(min(a), max(a)+d, d))
 
# 设置网格
plt.grid(alpha=0.4)
plt.show()

运行结果如下图:

python绘制简单直方图(质量分布图)的方法

程序分析:通过随机数random.randint()生成250个80-140的随机整数,代表250部电影的时长。然后要把时间段分成组,设置组距d为3,那么(max-min)//d即为分成的组数,然后通过plt.hist()对组数和数据进行拟合。设置x刻度时,因为range含头不含尾,所以最后截止的位置要加一个组距d,才能显示完全。可以看出,这个数字直方图可以显示每个电影时长在每个时段占得数目。那么问题又来了,如果想要知道在每个时段占总时段的比例呢,也就是频率分布直方图?

so easy! 只需要在plt.hist()里面设置参数density=True实现数量的频率化,其余不变。

代码如下:

'''
    组数=极差/组距
'''
from matplotlib import pyplot as plt
from matplotlib import font_manager
import random
 
a = [random.randint(80,140) for i in range(250)]
print(a)
print(max(a)-min(a))
 
# 计算组数
d = 3  # 组数
num_bins = (max(a)-min(a))//d
 
# 设置图形大小
plt.figure(figsize=(20,8),dpi=80)
plt.hist(a,num_bins,density=True)  # 使用density实现频率化
 
# 设置x轴刻度
plt.xticks(range(min(a),max(a)+d,d))
 
# 设置网格
plt.grid(alpha=0.4)
plt.show()

运行结果:

python绘制简单直方图(质量分布图)的方法

显而易见,每个时段的数目变成了总体的占比,也就是频率,很好的达到了想要的效果。

那如果要自己设置数据自己设置x轴的距离,对x轴的刻度不均匀划分呢?

上代码:

# coding=utf-8
from matplotlib import pyplot as plt
from matplotlib import font_manager
 
interval = [0,5,10,15,20,25,30,35,40,45,60,90,150]
width = [5,5,5,5,5,5,5,5,5,15,30,60]
quantity = [836,2737,3723,3926,3596,1438,3273,642,824,613,215,47]
 
plt.figure(figsize=(20,8),dpi=80)
 
plt.bar(range(len(quantity)),quantity,width=1)
 
# 设置x轴刻度
_x = [i-0.5 for i in range(13)]
 
plt.xticks(_x, interval)
 
plt.grid(alpha=0.8)
plt.show()

运行结果如下图:

python绘制简单直方图(质量分布图)的方法

可以看出来,很简单,只需要把x轴对应的数据设置好,把对应x轴的刻度设置好,进行数据匹配即可。一定要注意,分配的组数和数据个数匹配问题。

总结:这篇文章总的讲述了一下绘制频数直方图和频率直方图的绘制方法,通过图像进行比较,发现各个直方图的优缺点,以便在工程中进行运用。

Python 相关文章推荐
python uuid模块使用实例
Apr 08 Python
Python批量按比例缩小图片脚本分享
May 21 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
Apr 20 Python
python实现简单淘宝秒杀功能
May 03 Python
Flask Web开发入门之文件上传(八)
Aug 17 Python
python3 pygame实现接小球游戏
May 14 Python
python 实现在一张图中绘制一个小的子图方法
Jul 07 Python
python selenium登录豆瓣网过程解析
Aug 10 Python
Python短信轰炸的代码
Mar 25 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
Apr 25 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
Jun 09 Python
Python如何解除一个装饰器
Aug 07 Python
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
使用python绘制横竖条形图
python多次执行绘制条形图
Apr 20 #Python
Python 数据可视化工具 Pyecharts 安装及应用
python画条形图的具体代码
You might like
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
2013/06/18 PHP
解析crontab php自动运行的方法
2013/06/24 PHP
php画图实例
2014/11/05 PHP
利用laravel+ajax实现文件上传功能方法示例
2017/08/13 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
2020/10/28 PHP
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
2009/11/28 Javascript
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
DOM 中的事件处理介绍
2012/01/18 Javascript
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
用javascript读取xml文件读取节点数据
2014/08/12 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
JavaScript中var、let、const区别浅析
2018/06/24 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
微信小程序实现菜单左右联动
2020/05/19 Javascript
Python list操作用法总结
2015/11/10 Python
python统计指定目录内文件的代码行数
2019/09/19 Python
python mysql 字段与关键字冲突的解决方式
2020/03/02 Python
对Matlab中共轭、转置和共轭装置的区别说明
2020/05/11 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
2020/11/18 Python
世界排名第一的万圣节服装店:Spirit Halloween
2018/10/16 全球购物
小学少先队活动方案
2014/02/18 职场文书
测试工程师程序员求职信范文
2014/02/20 职场文书
技校毕业生自荐书
2014/05/23 职场文书
暖春观后感
2015/06/08 职场文书
2015暑期社会实践调查报告
2015/07/14 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
求职信如何撰写?
2019/05/22 职场文书
阿里云Nginx配置https实现域名访问项目(图文教程)
2021/03/31 Servers
MySQL优化及索引解析
2022/03/17 MySQL
golang操作rocketmq的示例代码
2022/04/06 Golang