当前位置:

首页 > 编程开发 > 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
    相关文章 更多
    PHP递归性能优化技巧与迭代替代方案
    PHP递归性能优化技巧与迭代替代方案

    解析PHP递归函数在树形数据处理中的性能瓶颈,提供预加载数据消除I/O、使用显式栈替代深层递归的实战方案,帮助开发者在代码可读性与执行效率间做出合理取舍。

    Java测试中怎么使用Mockito模拟依赖对象
    Java测试中怎么使用Mockito模拟依赖对象

    详细讲解在Java单元测试中如何使用Mockito模拟依赖对象,包括引入依赖、创建Mock、打桩返回值、行为验证以及Mock与Spy的核心差异和常见陷阱排查。

    链表删除节点的时间复杂度是多少及其详细分析
    链表删除节点的时间复杂度是多少及其详细分析

    详细分析链表删除节点的时间复杂度,深入探讨单链表与双向链表在不同已知前提下的查找与删除开销,并结合完整代码与清晰图解进行对比总结。

    codex如何配置模型参数及文件设置教程
    codex如何配置模型参数及文件设置教程

    想知道如何让AI写出的代码更贴合你的习惯?本文手把手教你在VS Code中调整Codex相关模型参数,通过修改配置文件优化温度值和令牌限制,解决代码建议不准确或响应慢的问题。

    Claude Code AI编程工具实力揭秘与编程助手实测
    Claude Code AI编程工具实力揭秘与编程助手实测

    通过实测展示Claude Code在终端中如何理解自然语言指令、自动修改代码文件并处理复杂编程任务,帮助开发者评估其实际辅助能力。

    winforms教程自学入门与基础开发步骤详解
    winforms教程自学入门与基础开发步骤详解

    本教程详细讲解如何使用Visual Studio创建WinForms项目,通过添加按钮和标签控件并编写点击事件代码,实现一个基础的计数器功能,适合C#初学者快速上手Windows窗体应用开发。

    Cursor自动补全设置教程教你快速开启代码补全功能
    Cursor自动补全设置教程教你快速开启代码补全功能

    详解Cursor编辑器中自动补全功能的开启与优化设置,涵盖Tab触发机制、上下文窗口调整及模型切换,帮助开发者解决补全延迟、干扰大等问题,提升编码流畅度。

    pandas的数据格式怎么转换和设置方法教程
    pandas的数据格式怎么转换和设置方法教程

    详解Pandas中数据格式转换的核心方法,包括astype强制转换、to_numeric容错处理及日期解析技巧,解决常见类型错误并提升数据处理效率。

    VS Code中文设置方法 简体语言包安装与切换教程
    VS Code中文设置方法 简体语言包安装与切换教程

    详细介绍在Visual Studio Code中安装Chinese (Simplified)语言包的方法,包括通过扩展市场搜索、安装及自动重启切换至简体中文界面的完整步骤,帮助开发者快速将编辑器本地化。

    cursor安装过程无法更改安装位置的解决方法
    cursor安装过程无法更改安装位置的解决方法

    针对Cursor安装包默认锁定C盘且无路径选择界面的问题,提供通过手动移动文件并创建目录联结(Symbolic Link)的解决方案,实现将软件安装在其他磁盘分区。

    查看更多
    精品专题 更多
    装机必备
    装机必备

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

    Windows
    Windows

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

    macOS软件
    macOS软件

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

    Mac软件 更多
    photoshop
    photoshop
    Windows、macOS 、 iPad

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

    Blender
    Blender
    Windows、macOS 和 Linux

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

    灵活计算器
    灵活计算器
    macOS/iOS/Android

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

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

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

    photoshop
    photoshop
    Windows、macOS 、 iPad

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

    Blender
    Blender
    Windows、macOS 和 Linux

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