我想使用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.我想生成这样的直方图 - 我该怎么做?
谢谢!
我将不胜感激以下任何见解。
我想在一个公共直方图上绘制两个数据集,这样两个直方图都没有顶部截止并且概率分布范围从 0 到 1。
让我解释一下我的意思。到目前为止,我可以很好地绘制一个直方图的两个数据集,并迫使这两个分布的积分写为1normed = 1
的ax.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 并保持两个分布的形状?