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

发布于 2021-01-29 17:04:02

我有数据作为浮动列表,我想将其绘制为直方图。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并将其绘制时,它为我提供了完全正确的分数。谢谢!

关注者
0
被浏览
145
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    因为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
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看