python - 如何在直方图中使用浮点数作为 bin 大小?
问题描述
我有一个列表,我想在 Python 中使用 0.01 的 bin 大小制作直方图:
plt.hist(list, bins = 0.01)
我不断收到类型错误,说 bin 只能是整数、字符串或数组。无论如何在 Python 中使用浮点数作为 binsize 绘制直方图?
解决方案
首先,尽量不要用具有特殊含义的词来命名变量。带有名称的变量list
会阻止list
在代码中进一步使用该命令。
该bins=
参数可以是单个数字,在这种情况下,它被解释为 bin 的数量。所以,它必须是一个严格的正整数。如果要设置特定的 bin 大小,则需要提供所需 bin 边缘的完整列表。最简单的方法使用np.arange(start, stop, step)
.
import matplotlib.pyplot as plt
import numpy as np
mylist = np.random.randn(1000) / 10
plt.hist(mylist, bins=np.arange(min(mylist), max(mylist)+0.01, step=0.01), color='turquoise')
如果最小值不是一个很好的整数,np.arange
将遵循该模式。要获得 bin 边缘的“好”值,您可以start
将np.arange
. 例如:
import matplotlib.pyplot as plt
import numpy as np
mylist = np.random.randn(10, 1000).cumsum(axis=1).ravel() / 500
step = 0.01
start = np.floor(min(mylist) / step) * step
stop = max(mylist) + step
bin_edges = np.arange(start, stop, step=step)
plt.hist(mylist, bins=bin_edges, color='crimson', ec='white')
plt.xticks(bin_edges, rotation=90)
plt.tight_layout()
plt.show()
PS:请注意,seabornsns.histplot
支持的参数不仅仅是 matplotlib 的plt.hist
。sns.histplot
可以选择 abinwidth
和/或 a binrange
,但也可以选择不同类型的统计信息。
推荐阅读
- angular - ngb-carousel 在角度应用程序中的页面刷新时无法正确加载
- mysql - Left Join 结合 Where 和 On 子句 MySQL
- windows - 在 Windows 10 上创建国际 INF 文件失败
- javascript - 部署计划的函数侦听器的firebase函数错误
- vue.js - 在 Vue 上选择第一个选项
- android - 汽车 AOPS 和移动/电视/机顶盒 AOSP 有什么区别
- android - 如何清除 Jetpack Compose 中的文本字段值?
- javascript - 如何提交结果?Slack bolt-js,JavaScript
- python - 在一个字典中添加相同键的值
- python - 在 if 语句中计算折扣和