python - Python 直方图总是有不正确的 bin
问题描述
我正在尝试使用plt.hist在 Python 中绘制直方图。这是我要绘制的数组:
[162 162 162 162 162 162 162 162 164 161 163 163 160 155 162 162 162 160 154 162 162 162 162 163 163 162 162 162 162 162 160 165 165 165 165 162 162 162 162 161 155 163 163 163 162 162 162 162 162 162 162 162 162 163 163 163 163 163 165 165 165 163 163 163 163 163 161 161 161 154 162 162 162 162 162 162 162 162 162 162 163 163 163 161 162 156 162 160 165 161 162 160 154 163 161 155 163 162 163 160 163 157 163 161 165 161 162 160 155 162 160 155 164 164 159 155 161 159 158 160 161 161 155 159 154 154 156 155 160 160 163 158 160 163 159 156 159 162 156 163 155 154 156 152 158 158 154 156 158 158 156 157 158 160 160 159 153 152 153 150 154 155 158 158 159 160 156 157 163 157 158 159 159 155 156 157 154 155 157 158 155 154 155 157 160 154 154 157 157 157 156 153 157 156 156 161 157 155 154 153 159 158 157 157 158 155 159 154 156 156 156 158 159 155 150 148 158 159 156 157 157 155 157 158 158 158 157 156 157 153 159 156 160 156 158 156 156 153156 156 157 157 157 157 160 157 156 156 159 155 154 158 156 155 154 160 158 158 159 155 155 158 158 156 155 156 151 158 157 156 156 155 158 158 159 157 155 158 157 154 157 157 157 159 155 156 154 156 ]
这是我的简单代码:
hst = plt.hist(stego_histogram , bins=256)
plt.show()
该数组由图像的一些像素构成。显然,8 位深度图像有 256 个值,这就是我选择那个 bin 的原因。但是,随着该值从 148 变为 165,直方图返回此范围内的值,但分为 256 个值。
我试图用其他 bin 值(16、17、18 ..)配置直方图,但它从来没有打印好。这是 bins=18 的直方图:
如何正确绘制此直方图?我只想要这个值的条形直方图。谢谢。
解决方案
直方图所做的只是计算一个值重复的次数,然后为每个可能的值绘制一个垂直条,每个垂直条的高度是该值的出现次数。
如果您想要 0 到 255 之间的完整直方图,则需要在 hist 调用中指定名为 range 的参数。
否则,您也可以使用 matplotlib 中的 bar 方法来显示您在此处提供的数组。
推荐阅读
- mysql - 从 MySQL 中的 JSON 数组中删除所有 JSON 对象
- python - 无法从 QProcess 将图像发送到 ffmpeg 标准输入
- visual-studio - 是否有理由按特定顺序使用单元测试?
- sql-server - 从 SQL Server 批量复制到 PostgreSQL
- c - BST 和链表 C 程序卡在较大的值上
- javascript - flutter_webview 获取正在显示的页面的html,如何在flutter中从webview页面获取HTML?
- typescript - 如何在 TypeScript 中导出类字典?
- python - 调整按钮大小,使用循环在 FormLayout 上添加按钮并删除 FormLayout 边框
- c - 为什么我的孩子有时只打印文件中的特定行?
- deployment - 在 Azure Devops 中手动调用 MsDeploy.exe