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 相关文章推荐
python2.7删除文件夹和删除文件代码实例
Dec 18 Python
简述Python中的面向对象编程的概念
Apr 27 Python
Python使用PyCrypto实现AES加密功能示例
May 22 Python
浅谈Python中的私有变量
Feb 28 Python
python xlsxwriter创建excel图表的方法
Jun 11 Python
对python修改xml文件的节点值方法详解
Dec 24 Python
python获取地震信息 微信实时推送
Jun 18 Python
python3.7 sys模块的具体使用
Jul 22 Python
python多进程(加入进程池)操作常见案例
Oct 21 Python
Opencv 图片的OCR识别的实战示例
Mar 02 Python
Python列表删除重复元素与图像相似度判断及删除实例代码
May 07 Python
我对PyTorch dataloader里的shuffle=True的理解
May 20 Python
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
使用python绘制横竖条形图
python多次执行绘制条形图
Apr 20 #Python
Python 数据可视化工具 Pyecharts 安装及应用
python画条形图的具体代码
You might like
重置版战役片段
2020/04/09 魔兽争霸
PHP 防注入函数(格式化数据)
2011/08/08 PHP
js 用CreateElement动态创建标签示例
2013/11/20 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
JavaScript实现在页面间传值的方法
2015/04/07 Javascript
Bootstrap每天必学之简单入门
2015/11/19 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
在Swiper内如何制作CSS3动画效果示例代码
2017/12/07 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
2018/07/03 jQuery
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
2020/07/23 Javascript
原生JS实现弹幕效果的简单操作指南
2020/11/10 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
Python3结合Dlib实现人脸识别和剪切
2018/01/24 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
便捷提取python导入包的属性方法
2018/10/15 Python
详解python列表(list)的使用技巧及高级操作
2019/08/15 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
解决pycharm安装第三方库失败的问题
2020/05/09 Python
50个强大璀璨的CSS3/JS技术运用实例
2010/02/27 HTML / CSS
新西兰最大的品牌运动鞋购物网站:Platypus NZ
2017/10/27 全球购物
美国高级音响品牌:Master&Dynamic
2018/07/05 全球购物
SportsDirect.com新加坡:英国第一体育零售商
2019/03/30 全球购物
网游商务专员求职信
2013/10/15 职场文书
英语系毕业生自荐信
2013/10/31 职场文书
物流管理应届生求职信
2013/11/07 职场文书
新闻系毕业生推荐信
2013/11/16 职场文书
优秀护士获奖感言
2014/02/20 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
设计师求职信
2014/07/01 职场文书
团队拓展活动总结
2014/08/27 职场文书
python使用shell脚本创建kafka连接器
2022/04/29 Python