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 相关文章推荐
10个易被忽视但应掌握的Python基本用法
Apr 01 Python
Python while、for、生成器、列表推导等语句的执行效率测试
Jun 03 Python
Python selenium抓取微博内容的示例代码
May 17 Python
Python面向对象之类和对象属性的增删改查操作示例
Dec 14 Python
使用Python实现将list中的每一项的首字母大写
Jun 11 Python
Python计算不规则图形面积算法实现解析
Nov 22 Python
Python.append()与Python.expand()用法详解
Dec 18 Python
浅谈keras的深度模型训练过程及结果记录方式
Jan 24 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
Jun 02 Python
Python classmethod装饰器原理及用法解析
Oct 17 Python
Python字符串的转义字符
Apr 07 Python
Python列表的索引与切片
Apr 07 Python
Python绘制散乱的点构成的图的方法
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 #Python
使用python绘制横竖条形图
python多次执行绘制条形图
Apr 20 #Python
Python 数据可视化工具 Pyecharts 安装及应用
python画条形图的具体代码
You might like
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
2015/03/26 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
PHP中->和=>的含义及使用示例解析
2020/08/06 PHP
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
2017/06/17 Javascript
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
vue中关闭eslint的方法分析
2018/08/04 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
2018/08/25 Javascript
利用原生的JavaScript实现简单拼图游戏
2018/11/18 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
2019/11/17 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python简单爬虫导出CSV文件的实例讲解
2018/07/06 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
Python类的继承用法示例
2019/01/31 Python
Django如何防止定时任务并发浅析
2019/05/14 Python
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
python range实例用法分享
2020/02/06 Python
python re的findall和finditer的区别详解
2020/11/15 Python
COACH德国官方网站:纽约现代奢侈品牌,1941年
2018/06/09 全球购物
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
西班牙在线宠物食品和配件商店:bitiba
2019/10/11 全球购物
ECCO俄罗斯官网:北欧丹麦鞋履及皮具品牌
2020/06/26 全球购物
求职简历自荐信
2013/10/20 职场文书
房地产开发计划书
2014/01/10 职场文书
教师岗位聘任书范文
2014/03/29 职场文书
社区维稳工作方案
2014/06/06 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
酒店员工手册范本
2015/05/14 职场文书
工作证明格式范文
2015/06/15 职场文书
《天净沙·秋思》教学反思三篇
2019/11/02 职场文书
python3.7.2 tkinter entry框限定输入数字的操作
2021/05/22 Python
SQL Server中锁的用法
2022/05/20 SQL Server