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安装Imaging报错:The _imaging C module is not installed问题解决方法
Aug 22 Python
python实现在pandas.DataFrame添加一行
Apr 04 Python
python去除扩展名的实例讲解
Apr 23 Python
python散点图实例之随机漫步
Aug 27 Python
python print输出延时,让其立刻输出的方法
Jan 07 Python
Python实现定时自动关闭的tkinter窗口方法
Feb 16 Python
python3通过selenium爬虫获取到dj商品的实例代码
Apr 25 Python
十行代码使用Python写一个USB病毒
Jun 21 Python
python图像处理模块Pillow的学习详解
Oct 09 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
Feb 26 Python
Python基于Webhook实现github自动化部署
Nov 28 Python
Python Pandas解析读写 CSV 文件
Apr 11 Python
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
使用python绘制横竖条形图
python多次执行绘制条形图
Apr 20 #Python
Python 数据可视化工具 Pyecharts 安装及应用
python画条形图的具体代码
You might like
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
批量修改RAR文件注释的php代码
2010/11/20 PHP
php学习笔记 php中面向对象三大特性之一[封装性]的应用
2011/06/13 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
详解PHP实现执行定时任务
2015/12/21 PHP
PHP设计模式之简单投诉页面实例
2016/02/24 PHP
golang与php实现计算两个经纬度之间距离的方法
2016/07/22 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
javascript中的变量作用域以及变量提升详细介绍
2013/10/24 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
详解详解Python中writelines()方法的使用
2015/05/25 Python
python+pandas分析nginx日志的实例
2018/04/28 Python
python 读取竖线分隔符的文本方法
2018/12/20 Python
python基于event实现线程间通信控制
2020/01/13 Python
keras多显卡训练方式
2020/06/10 Python
html5中valid、invalid、required的定义
2014/02/21 HTML / CSS
求职毕业生自荐书
2014/02/08 职场文书
关于运动会广播稿50字
2014/10/18 职场文书
2014年教育工作总结
2014/11/26 职场文书
庆祝教师节活动总结
2015/03/23 职场文书
2015年事业单位工作总结
2015/04/27 职场文书
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis
Django REST framework 限流功能的使用
2021/06/24 Python
python实现简单石头剪刀布游戏
2021/10/24 Python
vue实现列表垂直无缝滚动
2022/04/08 Vue.js
vue.js 使用原生js实现轮播图
2022/04/26 Vue.js
Python可视化神器pyecharts之绘制箱形图
2022/07/07 Python