matplotlib density=true 时概率和不为1

使用ax.hist()函数想要把数据转为密度直方图,直接使用density=true有时候y轴甚至会大于1。
density=ture的意思是保证该面积的积分为1,并不是概率和为1,因此我们需要对其进行改进。
最简单对方法就是对每个bin增加权重,强迫它为我们的概率值:

weights = np.ones_like(myarray)/float(len(myarray))
plt.hist(myarray, weights=weights)
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可能是因为您正在使用不支持normed参数的函数或方法。请检查您的代码是否使用了正确的函数或方法以及正确的参数名称。如果您需要使用normed参数,请查看您正在使用的函数或方法的文档,以确保它支持该参数。另外,normed参数已被弃用,建议使用density参数。 ### 回答2: 使用`normed=True`的问题可能是因为版本问题或参数错误。在较新版本的Matplotlib中,`normed`参数已经被更名为`density`,用于设置是否为概率密度函数进行归一化。因此,如果您的Matplotlib版本较新,请尝试使用`density=True`来实现相同的效果。 另外,请确保您正确地使用`normed=True`或`density=True`参数。该参数应该在绘制直方图作为关键字参数传递给`plt.hist()`方法。例如: ``` import matplotlib.pyplot as plt data = [1, 2, 3, 3, 4, 4, 4, 5, 5, 6] plt.hist(data, bins=5, density=True) plt.show() ``` 请注意,在这个示例中,我们将`density=True`作为关键字参数传递给`plt.hist()`方法,以便将直方图归一化为概率密度函数。 如果您仍然遇到问题,请确保您已经正确安装了Matplotlib,并检查输入参数是否正确。 ### 回答3: 在文档中normed=True参数已被弃用,并在较新的版本中已被替换为density=Truedensity=True参数控制直方图归一化,使得直方图的面积等于1,而不是通过normed=True参数基于频率进行归一化。因此,如果您的版本较新,尝试使用density=True参数来替代normed=True参数,应该能够得到正确的结果。另外,建议您阅读相关的官方文档或升级软件版本以获取更准确的信息和支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值