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中的序列化存储的方法
Apr 28 Python
基于python(urlparse)模板的使用方法总结
Oct 13 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
Apr 18 Python
对numpy.append()里的axis的用法详解
Jun 28 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
Dec 15 Python
Django之模板层的实现代码
Sep 09 Python
Python PyInstaller安装和使用教程详解
Jan 08 Python
Python中import导入不同目录的模块方法详解
Feb 18 Python
使用python实现多维数据降维操作
Feb 24 Python
pytorch 中autograd.grad()函数的用法说明
May 12 Python
Python 避免字典和元组的多重嵌套问题
Jul 15 Python
Python+pyaudio实现音频控制示例详解
Jul 23 Python
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
使用python绘制横竖条形图
python多次执行绘制条形图
Apr 20 #Python
Python 数据可视化工具 Pyecharts 安装及应用
python画条形图的具体代码
You might like
js 处理URL实用技巧
2010/11/23 Javascript
别了 JavaScript中的isXX系列
2012/08/01 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
2015/03/04 Javascript
javascript格式化日期时间方法汇总
2015/06/19 Javascript
jQuery实现简单的列表式导航菜单效果代码
2015/08/31 Javascript
javascript中return,return true,return false三者的用法及区别
2015/11/17 Javascript
jquery pagination插件动态分页实例(Bootstrap分页)
2016/12/23 Javascript
js实现图片左右滚动效果
2017/02/27 Javascript
JS实现复制功能
2017/03/01 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
Vue常用指令详解分析
2018/08/19 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
2018/11/15 Javascript
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
Python写的一个简单监控系统
2015/06/19 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
python调用xlsxwriter创建xlsx的方法
2018/05/03 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
python如何实现一个刷网页小程序
2018/11/27 Python
Python正则表达式和元字符详解
2018/11/29 Python
python实现文本界面网络聊天室
2018/12/12 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
2020/02/13 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
学校献爱心活动总结
2014/07/08 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
2016应届毕业生自荐信范文
2016/01/28 职场文书
2016年学校十一国庆节活动总结
2016/04/01 职场文书
世界文化遗产导游词
2019/08/07 职场文书
叶县这家生产军用电台的兵工厂,人称“四机部”,走出一上将
2022/02/18 无线电
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android
Python的property属性详细讲解
2022/04/11 Python