我正在创建在数据框中组织并按天分组的数据直方图。有时可能会发生数据完全相同的情况。因此,当我使用该normed = True属性绘制直方图时,我希望有一个以零为中心且高度等于 1 的 bin。但是,我看到高度等于 bin 的数量。我怎样才能解决这个问题?我想用直方图表示一个概率密度函数,所以最大值应该是1。代码示例和输出:plt.rcParams['figure.figsize'] = 10, 4data = np.zeros((1000))l = plt.hist(data,normed = True, bins = 100)编辑:我现在看到该属性normed已被弃用。但是,如果我尝试使用该属性,则会density出现错误AttributeError: Unknown property density
2 回答
慕莱坞森
TA贡献1810条经验 获得超4个赞
您看到的图是正确的,因为曲线下的面积(直方图/条形图)应该是 1。这在您的图中确实如此。为了强调这一点,我在 at 创建了一条垂直线,x=0.01您会注意到条的宽度确实是 0.01。由于条形的高度为 100,因此面积为 100 * 0.01 = 1。
plt.rcParams['figure.figsize'] = 10, 4
data = np.zeros((1000))
l = plt.hist(data,normed = True, bins = 100)
plt.axvline(0.01, lw=1)
plt.ylim(0, 150)
如果您使用density=Trueas,也会发生同样的情况
l = plt.hist(data,density = True, bins = 100)
使用jdehesa的建议,按照你的方式工作
l = plt.hist(data,density = True, bins=np.arange(-10, 11))
根据此答案使用DavidG的建议为您提供 1 的高度,但该区域未标准化为 1。
weights = np.ones_like(data)/float(len(data)) l = plt.hist(data,weights=weights)
最后,如果您需要高度为 1 和宽度为 1(因此面积 = 1)以及归一化面积,您可以使用单个 bin 作为
l = plt.hist(data, density=True, bins=1) plt.xlim(-10, 10)
添加回答
举报
0/150
提交
取消