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分割TXT文件成4K的TXT文件
May 23 Python
Django跨域请求问题的解决方法示例
Jun 16 Python
pyqt5实现俄罗斯方块游戏
Jan 11 Python
Python实现E-Mail收集插件实例教程
Feb 06 Python
python绘制漏斗图步骤详解
Mar 04 Python
Django模板语言 Tags使用详解
Sep 09 Python
Python 求数组局部最大值的实例
Nov 26 Python
Python3 A*寻路算法实现方式
Dec 24 Python
python实现简单坦克大战
Mar 27 Python
Python日志处理模块logging用法解析
May 19 Python
详解如何修改python中字典的键和值
Sep 29 Python
python各种excel写入方式的速度对比
Nov 10 Python
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
使用python绘制横竖条形图
python多次执行绘制条形图
Apr 20 #Python
Python 数据可视化工具 Pyecharts 安装及应用
python画条形图的具体代码
You might like
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
浅析PHP绘图技术
2013/07/03 PHP
php preg_replace替换实例讲解
2013/11/04 PHP
PHP Trait代码复用类与多继承实现方法详解
2019/06/17 PHP
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
ECMAScript 创建自己的js类库
2012/11/22 Javascript
js单例模式详解实例
2013/11/21 Javascript
判断在css加载完毕后执行后续代码示例
2014/09/03 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
VueJS 取得 URL 参数值的方法
2019/07/19 Javascript
详解利用eventemitter2实现Vue组件通信
2019/11/04 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
2020/02/03 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
JavaScript实现多文件下载方法解析
2020/08/07 Javascript
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
[07:26]2015国际邀请赛第二日TOP10集锦
2015/08/06 DOTA
一文了解python 3 字符串格式化 F-string 用法
2020/03/04 Python
python openCV实现摄像头获取人脸图片
2020/08/20 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
应届生会计电算化求职信
2013/10/03 职场文书
创建卫生先进单位实施方案
2014/03/10 职场文书
青年文明号创建承诺
2014/03/31 职场文书
投标担保书范文
2014/04/02 职场文书
社区党的群众路线教育实践活动总结材料
2014/10/31 职场文书
2014幼儿园教育教学工作总结
2014/12/17 职场文书
搭讪开场白台词大全
2015/05/28 职场文书
家长通知书家长意见
2015/06/03 职场文书
2015入党自传书范文
2015/06/26 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书