在matplotlib直方图中设置相对频率

我有数据作为浮动列表,我想将其绘制为直方图。Hist()函数可以完美地完成绝对直方图的绘制。但是,我无法弄清楚如何以相对频率格式表示它-

我想将其表示为y轴上的分数或理想情况下为百分比。

这是代码:

fig = plt.figure()

ax = fig.add_subplot(111)

n, bins, patches = ax.hist(mydata, bins=100, normed=1, cumulative=0)

ax.set_xlabel('Bins', size=20)

ax.set_ylabel('Frequency', size=20)

ax.legend

plt.show()

我以为normed =

1参数可以做到这一点,但是它给出的分数太高,有时大于1。它们似乎也取决于bin的大小,好像它们没有通过bin大小或其他东西归一化。但是,当我将cumulative

= 1设置为1时,它的总和很好。那么,渔获量在哪里?顺便说一句,当我将相同的数据输入到Origin并将其绘制时,它为我提供了完全正确的分数。谢谢!

回答:

因为hist的规范化选项返回点的密度,例如dN / dx

您需要的是这样的:

 # assuming that mydata is an numpy array

ax.hist(mydata, weights=np.zeros_like(mydata) + 1. / mydata.size)

# this will give you fractions

以上是 在matplotlib直方图中设置相对频率 的全部内容, 来源链接: utcz.com/qa/403038.html

回到顶部