H.H*_*H.H 30 python matplotlib python-2.7
有人可以向我解释直方图中的"bins"是什么(matplotlib hist函数)?假设我需要绘制一些数据的概率密度函数,我选择的箱子如何影响那个?我该如何选择它们?(我已经在matplotlib.pyplot.hist和numpy.histogram库中读过它们,但我没有得到这个想法)
jak*_*vdp 43
该bins
参数告诉您数据将被分成的区域数.您可以将其指定为整数或bin边缘列表.
例如,这里我们要20个箱子:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.randn(1000)
plt.hist(x, bins=20)
Run Code Online (Sandbox Code Playgroud)
在这里,我们要求位置[-4,-3,-2 ... 3,4]处的bin边缘.
plt.hist(x, bins=range(-4, 5))
Run Code Online (Sandbox Code Playgroud)
关于如何选择"最佳"箱数的问题是一个有趣的问题,实际上有关于这个主题的大量文献.已经提出了一些常用的经验法则(例如,Freedman-Diaconis规则,Sturges规则,Scott规则,平方根规则等),每个规则都有自己的优点和缺点.
如果你想要一个很好的Python实现各种这些自动调整直方图规则,你可以在最新版本的AstroPy包中查看直方图功能,如下所述.这就像plt.hist
,但是让你使用语法,例如hist(x, bins='freedman')
通过上面提到的Freedman-Diaconis规则选择bin.
我个人最喜欢的是"贝叶斯块"(bins="blocks"
),它解决了具有不相等的箱宽度的最佳装箱.你可以在这里阅读更多内容.
编辑,2017年4月:使用matplotlib版本2.0或更高版本以及numpy版本1.11或更高版本,您现在可以通过指定,例如,直接在matplotlib中指定自动确定的bin bins='auto'
.这使用了Sturges和Freedman-Diaconis bin的最大选择.您可以在numpy.histogram
文档中阅读有关选项的更多信息.
要补充jakes answer,numpy.histogram_bin_edges
如果您只想计算最佳 bin 边缘,而不实际执行直方图,则可以使用
。 histogram_bin_edges
是专门为优化计算 bin 边缘而设计的函数。您可以选择七种不同的算法进行优化。
归档时间: |
|
查看次数: |
70881 次 |
最近记录: |