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的源码浅要剖析Python的内存管理
Apr 16 Python
python对数组进行反转的方法
May 20 Python
利用python爬取散文网的文章实例教程
Jun 18 Python
Python实现判断字符串中包含某个字符的判断函数示例
Jan 08 Python
python编程使用协程并发的优缺点
Sep 20 Python
对python多线程SSH登录并发脚本详解
Feb 14 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
Apr 03 Python
用python3 返回鼠标位置的实现方法(带界面)
Jul 05 Python
在Python中使用filter去除列表中值为假及空字符串的例子
Nov 18 Python
Python3实现发送邮件和发送短信验证码功能
Jan 07 Python
python列表切片和嵌套列表取值操作详解
Feb 27 Python
python将字典内容写入json文件的实例代码
Aug 12 Python
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
使用python绘制横竖条形图
python多次执行绘制条形图
Apr 20 #Python
Python 数据可视化工具 Pyecharts 安装及应用
python画条形图的具体代码
You might like
两个开源的Php输出Excel文件类
2010/02/08 PHP
分享一个超好用的php header下载函数
2014/01/31 PHP
PHP批量上传图片的具体实现方法介绍.
2014/02/26 PHP
php中$_GET与$_POST过滤sql注入的方法
2014/11/03 PHP
在Mac上编译安装PHP7的开发环境
2015/07/28 PHP
详解PHP匿名函数与注意事项
2016/03/29 PHP
PHP简单日历实现方法
2016/07/20 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
php实现微信小程序授权登录功能(实现流程)
2019/11/13 PHP
让元素在网页中可拖动示例代码
2013/08/13 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
2017/02/12 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
深入理解Vue 组件之间传值
2018/08/16 Javascript
vue.js引入外部CSS样式和外部JS文件的方法
2019/01/06 Javascript
[03:24][TI9纪实] Dota奶爸
2019/08/22 DOTA
Python实现Mysql数据库连接池实例详解
2017/04/11 Python
Python编程实现及时获取新邮件的方法示例
2017/08/10 Python
Python优先队列实现方法示例
2017/09/21 Python
基于python OpenCV实现动态人脸检测
2018/05/25 Python
python画折线图的程序
2018/07/26 Python
基于Python实现定时自动给微信好友发送天气预报
2018/10/25 Python
python读取txt文件中特定位置字符的方法
2018/12/24 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
HTML5离线应用与客户端存储的实现
2018/05/03 HTML / CSS
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
大一自我鉴定范文
2013/10/04 职场文书
三八红旗手先进事迹材料
2014/05/13 职场文书
幸福家庭标语
2014/06/27 职场文书
社区助残日活动总结
2014/08/29 职场文书
收款委托书范本
2014/09/11 职场文书
四风问题专项整治工作情况报告
2014/10/28 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书
MySQL系列之六 用户与授权
2021/07/02 MySQL