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搭建微信公众平台
Feb 09 Python
Python实现的多线程http压力测试代码
Feb 08 Python
python3实现域名查询和whois查询功能
Jun 21 Python
对python多线程中Lock()与RLock()锁详解
Jan 11 Python
Python中的 is 和 == 以及字符串驻留机制详解
Jun 28 Python
解决django中ModelForm多表单组合的问题
Jul 18 Python
python conda操作方法
Sep 11 Python
Python获取、格式化当前时间日期的方法
Feb 10 Python
python字符串下标与切片及使用方法
Feb 13 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
Feb 28 Python
Jupyter notebook 远程配置及SSL加密教程
Apr 14 Python
python 如何快速复制序列
Sep 07 Python
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
使用python绘制横竖条形图
python多次执行绘制条形图
Apr 20 #Python
Python 数据可视化工具 Pyecharts 安装及应用
python画条形图的具体代码
You might like
用PHP的ob_start();控制您的浏览器cache!
2007/02/14 PHP
深入探讨<br />和 \r\n两者有什么区别??
2013/06/05 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
javascript 硬盘序列号+其它硬件信息
2008/12/23 Javascript
jQuery 工具函数学习资料
2010/04/29 Javascript
javascript 学习笔记(onchange等)
2010/11/14 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
jqgrid 表格数据导出实例
2013/11/21 Javascript
使用javascript做的一个随机点名程序
2014/02/13 Javascript
Javascript 绘制 sin 曲线过程附图
2014/08/21 Javascript
js中this的用法实例分析
2015/01/10 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
JavaScript中Date对象的常用方法示例
2015/10/24 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
2018/03/17 Javascript
vue自定v-model实现表单数据双向绑定问题
2018/09/03 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
Vuex的actions属性的具体使用
2019/04/14 Javascript
python版本的仿windows计划任务工具
2018/04/30 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
Python抓包程序mitmproxy安装和使用过程图解
2020/03/02 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
戴尔新加坡官网:Dell Singapore
2020/12/13 全球购物
Linux文件系统类型
2012/09/16 面试题
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
儿科护士实习自我鉴定
2013/10/17 职场文书
中专毕业生自荐信范文
2013/11/28 职场文书
商务英语求职自荐信范文
2013/12/24 职场文书
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
2014年驾驶员工作总结
2014/11/18 职场文书
员工工作表扬信
2015/05/05 职场文书
宇宙与人观后感
2015/06/05 职场文书
话题作文之财富(600字)
2019/12/03 职场文书
Java实战之用Swing实现通讯录管理系统
2021/06/13 Java/Android
ConstraintValidator类如何实现自定义注解校验前端传参
2021/06/18 Java/Android