相关疑难解决方法(0)

在matplotlib中绘制条形高度总和为1的直方图

我想使用matplotlib从矢量绘制标准化的直方图.我尝试了以下方法:

plt.hist(myarray, normed=True)
Run Code Online (Sandbox Code Playgroud)

以及:

plt.hist(myarray, normed=1)
Run Code Online (Sandbox Code Playgroud)

但是这两个选项都没有从[0,1]生成y轴,使得直方图的条形高度总和为1.我想生成这样的直方图 - 我该怎么做?

谢谢!

python numpy graph matplotlib scipy

75
推荐指数
5
解决办法
13万
查看次数

标准化同一图中的两个直方图

我将不胜感激以下任何见解。

我想在一个公共直方图上绘制两个数据集,这样两个直方图都没有顶部截止并且概率分布范围从 0 到 1。

让我解释一下我的意思。到目前为止,我可以很好地绘制一个直方图的两个数据集,并迫使这两个分布的积分写为1normed = 1ax.hist(),如下面的图所示: 在此处输入图片说明

它是由这样的代码产生的:

        x1, w1, patches1 = ax.hist(thing1, bins=300, edgecolor='b', color='b', histtype='stepfilled', alpha=0.2, normed = 1)

        x2, w2, patches2 = ax.hist(thing2, bins=300, edgecolor='g', color='g', histtype='stepfilled', alpha=0.2, normed = 1)             
Run Code Online (Sandbox Code Playgroud)

在一般情况下,一种概率分布比另一种高得多,这使得很难清楚地阅读图。

所以,我试图对两者进行归一化,使它们在 y 轴上的范围都从 0 到 1,并且仍然保持它们的形状。例如,我尝试了以下代码:

for item in patches1:
    item.set_height(item.get_height()/sum(x1))
Run Code Online (Sandbox Code Playgroud)

这是取自这里的讨论如何在 python 中规范化直方图?,但 python 向我抛出一条错误消息,说没有这样的质量get_height.

我的问题很简单:我怎样才能让 y 轴的范围从 0 到 1 并保持两个分布的形状?

database matplotlib normalization histogram bar-chart

3
推荐指数
1
解决办法
4503
查看次数