千家信息网

基于Python+Matplotlib怎么实现直方图的绘制

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,今天小编给大家分享一下基于Python+Matplotlib怎么实现直方图的绘制的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇
千家信息网最后更新 2026年11月03日基于Python+Matplotlib怎么实现直方图的绘制

今天小编给大家分享一下基于Python+Matplotlib怎么实现直方图的绘制的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1.关于直方图

直方图 也称 质量分布图,虽然看起来像柱状图,

实际上区别又很大。直方图通常横轴表示数据类型,纵轴表示各数据类型的分布情况。

直方图又可以分为频数分布直方图和频率分布直方图。其绘制方法并无多少差异,只是描述的事件有所不同。频数分布直方图描述的是某事件的数量,而频率分布则描述的是其发生的频率。

而关于频率分布直方图,又可以理解为是"密度图"的一种。频率分布直方图 和 密度图 都可以用来描述事件的概率分布,其中频率分布直方图描述的是离散型随机变量的概率分布,而密度图则描述的是连续型随机变量的概率分布。

2.plt.hist()

绘制直方图通过plt.hist()方法实现,其常用的参数有:

x 数据集

bins ------------- 统计数据的区间分布。可以是一个元素为数值的列表,也可以是一个数值。是一个数值的时候可以配合range参数使用。

range ----------- 元组类型,显示的区间。

当设置区间分布使用数值型的bins和range参数设定时:range确定一个范围,传入形式是一个元组(注意不是range范围对象),左右端点值都可取。数值型的bins表示将该范围分成的份数(等分)。

density --------- 布尔型,显示频率统计结果。默认为None(相当于False),设为False不显示频率统计结果;设为True则显示频率统计结果,即绘制出的图像由频数分布直方图变为频率分布直方图。

histtype -------- 可选参数,即直方图的类型。默认为bar,即绘制出的"柱状"条形。还可以设置为barstacked、step、stepfilled。

align -------------可选参数,控制柱状图的水平分布,设置值为left、mid 或 right,默认值为mid,也推荐使用mid。left和right会产生部分的空白区域。

log --------------- 布尔类型,默认为False,即y轴是否选择指数刻度。

stacked --------- 布尔类型,默认为False,表示是否为堆积柱状图。

edgecolor------- 设定边沿颜色

facecolor-------- 可以用来设定直方图的颜色,也可以简写为color。

orientation-------直方图的方向,默认为竖直方向上的(‘vertical’),设为’horizontal’则表示水平方向上的。

cumulative------默认为False,表示不累积。如果为True则设置累积分度直方图。

3. 绘制一幅简单的 频数 分布直方图

import matplotlib.pyplot as pltimport numpy as npplt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falseplt.rcParams['axes.facecolor'] ='#cc00ff'# 设定随机数种子为30np.random.seed(30)data = np.random.randint(0, 100, 100)plt.hist(data, bins=[0, 25, 50, 75, 100], facecolor='#ffff00', edgecolor='#FF0000')plt.xlabel('X指标')plt.ylabel('样本个数')plt.title('X指标频数分布直方图')plt.show()

4. 绘制一幅 频率 分布直方图

将density设置为True即可·。

此外我们再修改一些细节,将histtype参数设置为stepfilled(梯状且填充)。

并把y轴的标签由"样本个数"改为"样本频率"。

import matplotlib.pyplot as pltimport numpy as npplt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falseplt.rcParams['axes.facecolor'] ='#cc00ff'np.random.seed(30)data = np.random.randint(0, 100, 100)plt.hist(data, bins=[0, 25, 50, 75, 100], facecolor='#ffff00', edgecolor='#FF0000', density=True, histtype='stepfilled')plt.xlabel('X指标')plt.ylabel('样本频率')plt.title('X指标频数分布直方图')plt.show()

图像效果如下:

5. 累积分布直方图(水平方向)

增加参数cumulative=True, orientation=‘horizontal’。

此外,因为图像变成了水平方向,所以也需要把x、y轴标签互换并稍作调整。

这里设置区间分布使用数值型的bins和range参数设定,范围为0-100,区间分割为10等份。

import matplotlib.pyplot as pltimport numpy as npplt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falseplt.rcParams['axes.facecolor'] ='#cc00ff'np.random.seed(30)data = np.random.randint(0, 100, 100)plt.hist(data, bins=10, range=(0, 100), facecolor='#ffff00', edgecolor='#FF0000', density=True, cumulative=True, orientation='horizontal')plt.xlabel('样本累积频率')plt.ylabel('X指标')plt.title('X指标频数分布直方图')plt.show()

图像效果如下:

以上就是"基于Python+Matplotlib怎么实现直方图的绘制"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

直方图 频率 参数 频数 指标 数值 类型 区间 方向 样本 图像 数据 水平 知识 篇文章 范围 柱状 统计 事件 密度 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司排名 互联网科技工作委员会毛军 深圳恒合互联网络科技有限公司 互联网是不是新科技 以房互联网科技 天津摩尔互联网科技 互联网科技的未来发展 互联网科技汛 互联网科技公司做什么 重庆科技学院互联网 中国最先进互联网科技公司 互联网科技创新服务 米聚互联网科技南京有限公司排面 华夏恒生科技与互联网科技 半导体行业属于互联网高科技类吗 科技互联网行业投资研究 互联网科技平台产品运营 盐城市攀科互联网科技有限公司 互联网高科技绘画 前海云享互联网科技 菲比寻常互联网科技 成都仁贤领冠互联网科技有限公司 恒银科技与互联网金融 随着互联网科技发展 宁夏众和广鑫互联网科技有限公司 乌苏新华互联网科技做什么的 爱医互联网络科技 宁波跨境商互联网科技有限公司 黑龙江互联网科技公司 科技发展第三阶段互联网时代
0