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和C语言混合编程实例
Jun 04 Python
在Python的Django框架中生成CSV文件的方法
Jul 22 Python
python列表的增删改查实例代码
Jan 30 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
Python编程中flask的简介与简单使用
Dec 28 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
Mar 23 Python
pytorch实现CNN卷积神经网络
Feb 19 Python
OpenCV Python实现拼图小游戏
Mar 23 Python
Tensorflow与Keras自适应使用显存方式
Jun 22 Python
Django REST Swagger实现指定api参数
Jul 07 Python
Pytho爬虫中Requests设置请求头Headers的方法
Sep 22 Python
Python time库的时间时钟处理
May 02 Python
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
使用python绘制横竖条形图
python多次执行绘制条形图
Apr 20 #Python
Python 数据可视化工具 Pyecharts 安装及应用
python画条形图的具体代码
You might like
php socket方式提交的post详解
2008/07/19 PHP
PHP调用Twitter的RSS的实现代码
2010/03/10 PHP
php数组一对一替换实现代码
2012/08/31 PHP
php将html转为图片的实现方法
2017/05/19 PHP
PHP通过curl获取接口URL的数据方法
2018/05/31 PHP
jquery struts 验证唯一标识(公用方法)
2013/03/27 Javascript
js中各种类型的变量在if条件中是true还是false
2014/07/16 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
react实现一个优雅的图片占位模块组件详解
2017/10/30 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
iView框架问题整理小结
2018/10/16 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
2018/11/30 Javascript
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
python调用Delphi写的Dll代码示例
2017/12/05 Python
python中将一个全部为int的list 转化为str的list方法
2018/04/09 Python
python发送告警邮件脚本
2018/09/17 Python
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
Python中extend和append的区别讲解
2019/01/24 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
Python爬虫之Selenium库的使用方法
2021/01/03 Python
德国自然时尚和有机产品购物网站:Waschbär
2019/05/29 全球购物
高一物理教学反思
2014/01/24 职场文书
函授大学生自我鉴定
2014/02/05 职场文书
《中国的气候》教学反思
2014/02/23 职场文书
个人自我鉴定总结
2014/03/25 职场文书
人力资源求职信
2014/05/25 职场文书
2014年除四害工作总结
2014/12/06 职场文书
暑期实践个人总结
2015/03/06 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
800字作文之大雪
2019/12/04 职场文书
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis