展开菜单
首页 精品内容 本月促销 装机必备 Windows macOS软件 IOS软件 Android AI PDF教程 专题
全部分类

当前位置:

首页 > 编程开发 > Python怎么画直方图_hist()频数分布与bins区间数量调整

Python怎么画直方图_hist()频数分布与bins区间数量调整

画直方图时bins参数决定柱子数量,可设为整数或数组指定边界,也可用'fd'等自动算法但需谨慎。数据量小bins宜少,量大则需增多。density=False显示频数,True显示概率密度。range限定横轴范围,异常值建议截断。Pandas的hist()与plt.hist()参数传递存在差异,需显式传参以保证一致性。

画直方图的时候,最让人头疼的往往是柱子数量——要么糊成一团黑块,根本看不出分布;要么碎成细线,信息全被噪音淹没。问题本质出在 bins 参数上。默认值(比如 10 或 'auto')只适合简单数据,实际场景里几乎都得手动调。

怎么调?两种方式最常用:一个是直接给整数,比如 bins=20,强制分 20 组;另一个是传数组,比如 np.arange(0, 101, 5),明确指定每个区间的边界。Matplotlib 也支持 'fd'、'scott'、'sturges' 这类字符串自动计算,但千万别无脑信——尤其是数据有大量重复值或长尾的时候,'sturges 经常严重低估 bins 数量,直接导致柱子太少。数据量小的(比如几百个),bins=10 可能还嫌密;数据量大的(超过一万),bins=50 可能都不够,得试到柱子边缘清晰、不锯齿也不重叠才算到位。

Python怎么画直方图_hist()频数分布与bins区间数量调整

plt.hist() 画出来的直方图柱子太少或太多,怎么调 bins

这个问题的根源其实就是 bins 设置不合理。很多新手一上来就 plt.hist(data),结果要么柱子太宽丢失细节,要么太窄全是锯齿。记住:bins 可以是整数(比如 20),表示强制分 20 组;也可以是数组(比如 np.arange(0, 101, 5)),明确指定每个区间的边界。用 'fd'、'scott'、'sturges' 这类字符串也行,但别盲目依赖自动算法——尤其当数据有大量重复值或长尾时,'sturges' 常常低估 bins 数量。数据量小(<1000),bins=10 可能过密;数据量大(>10000),bins=50 可能还不够,得试到柱子边缘清晰、不锯齿也不重叠为止。

想看频数(count)还是概率密度(density),关键看 density 参数

很多人调完 bins 发现纵轴数字看不懂:明明总共 1000 个数,最高柱子却标着 0.03?这大概率是误开了 density=True。做探索性分析、想看看“有多少个”的时候,用默认的频数模式(density=False)就够了;只有当你需要和概率密度曲线(比如正态分布 PDF)做对比,或者做拟合分布可视化时,才该设 density=True。

  • density=False(默认):纵轴是落入该 bin 的样本个数,所有柱子面积之和 = 总样本数。
  • density=True:纵轴变成概率密度,所有柱子面积之和 = 1,此时高度 = 频数 / (总样本数 × bin 宽度)。
  • 注意:一旦设了 density=True,就不能直接和原始频数曲线叠在一起画,否则尺度错乱。

横坐标范围不对、bin 边界不齐整,检查 range 和 bins 类型配合

比如数据是 [1.2, 1.8, 2.1, ..., 9.7],但直方图从 0 开始、到 10 结束,且 bin 边界是 0.0, 1.0, 2.0...——这种“人为对齐”会让第一组/最后一组空着,或者把本该在一个 bin 的值劈开。常见现象:左右留白过大、某些 bin 明明有数据却显示为 0、柱子宽度不一致(尤其用了非等距 bins 数组时)。

  • 用 range=(min_val, max_val) 可以限定横轴范围,但不会改变 bin 划分逻辑;真正控制划分的是 bins。
  • 想要 bin 边界整齐(比如都落在整数上),推荐显式传入 bins=np.arange(start, stop+step, step),而不是只靠 range + 整数 bins。
  • 如果数据含异常值(比如一个 1000 混在一堆 1~10 的数里),先 data = data[data < 100] 截断,再画图,否则 range 被拉长,bins 全部被稀释。

和 pandas hist() 混用时,bins 行为不一致容易踩坑

Pandas 的 Series.hist() 底层调用的就是 matplotlib.pyplot.hist(),但参数透传过程中有隐式转换——最典型的是 bins 为字符串时(如 'auto'),pandas 会先调 np.histogram_bin_edges() 算一次,再喂给 matplotlib,结果可能和你直接调 plt.hist(..., bins='auto') 不一样。快速探索用 df['col'].hist() 没问题;但需要复现、调试或和模型输出对齐时,务必切回原生 plt.hist() 并显式传参。

  • Pandas 的 hist() 不支持 density 参数,要用 weights 手动换算(比如 weights=np.ones(len(data))/len(data))模拟 density 效果。
  • 同一份数据,plt.hist(data, bins=20) 和 pd.Series(data).hist(bins=20) 柱子位置和高度几乎一样;但换成 bins='sturges' 就可能差 2–3 个 bin。
  • 如果你在 Jupyter 里先跑 df.hist() 再跑 plt.hist(),记得加 plt.figure() 新建画布,否则两张图叠在一起,bins 设置互相干扰。

事情说清了就结束。真正难的不是调出一张“看起来对”的直方图,而是每次换数据都要重新判断:这组数据有没有离群点?要不要截断?bin 宽度该不该随数据范围缩放?这些没法写成固定参数,只能看图说话。

本文内容来源于网友投稿,如有侵权请联系删除。
作者最新文章
编程开发 Python
相关文章 更多
精品专题 更多
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

IOS软件

正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

AI

正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

Mac软件 更多
photoshop
photoshop

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

灵活计算器
灵活计算器

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

图几
图几

图几是一款适用于 macOS 的截图、标注与美化工具,支持离线操作保障隐私。界面整理和高频系统操作被放到一起考虑,桌面或窗口内容一多时,管理起来会更省心。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

Mac
WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

Mountain Duck
Mountain Duck

Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

WINDOWS 更多
3dmax(3ds max)
3dmax(3ds max)

Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

photoshop
photoshop

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

Windows 10
Windows 10

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

傲梅轻松备份
傲梅轻松备份

傲梅轻松备份是一款专业易用的数据备份软件,为重要数据提供安全保障。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

Mac
Wise Folder Hider Pro
Wise Folder Hider Pro

Wise Folder Hider Pro 是一款专业级文件和文件夹隐藏加密软件,为私密数据添加多重保护。高频操作更强调就近处理,浏览、整理和跨目录移动文件时,来回切换和重复点击都会少很多。

WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。