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 域名分析工具实现代码
Jul 15 Python
python操作redis的方法
Jul 07 Python
Python进阶-函数默认参数(详解)
May 18 Python
详解Python 序列化Serialize 和 反序列化Deserialize
Aug 20 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
Nov 23 Python
DataFrame中的object转换成float的方法
Apr 10 Python
Python实现读取txt文件并转换为excel的方法示例
May 17 Python
python基础教程之while循环
Aug 14 Python
你可能不知道的Python 技巧小结
Jan 29 Python
python实现猜拳游戏
Mar 04 Python
python与js主要区别点总结
Sep 13 Python
python em算法的实现
Oct 03 Python
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
使用python绘制横竖条形图
python多次执行绘制条形图
Apr 20 #Python
Python 数据可视化工具 Pyecharts 安装及应用
python画条形图的具体代码
You might like
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
2011/07/03 PHP
PHP微信支付开发实例
2016/06/22 PHP
PHP观察者模式实例分析【对比JS观察者模式】
2019/05/22 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
PHP如何使用cURL实现Get和Post请求
2020/07/11 PHP
对象特征检测法判断浏览器对javascript对象的支持
2009/07/25 Javascript
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
关于query Javascript CSS Selector engine
2013/04/12 Javascript
jquery.post用法之type设置问题
2014/02/24 Javascript
让checkbox不选中即将选中的checkbox不选中
2014/07/11 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
2015/09/01 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
ES6学习笔记之map、set与数组、对象的对比
2018/03/01 Javascript
vue基础之事件简写、事件对象、冒泡、默认行为、键盘事件实例分析
2019/03/11 Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
2020/02/15 Javascript
微信小程序自定义底部弹出框功能
2020/11/18 Javascript
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
Python3实现将文件归档到zip文件及从zip文件中读取数据的方法
2015/05/22 Python
Python实现多线程抓取妹子图
2015/08/08 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
浅谈django url请求与数据库连接池的共享问题
2019/08/29 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
什么是Web Service?
2012/07/25 面试题
Delphi笔试题
2016/11/14 面试题
教师考核鉴定意见
2015/06/05 职场文书
无犯罪记录证明样本
2015/06/16 职场文书
python中24小时制转换为12小时制的方法
2021/06/18 Python
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android
SQL 聚合、分组和排序
2021/11/11 MySQL