【发布时间】:2018-06-08 12:15:19
【问题描述】:
我将不胜感激以下任何见解。
我想在一个常见的直方图上绘制两个数据集,这样两个直方图都没有顶部截止并且概率分布范围为 0 到 1。
让我解释一下我的意思。到目前为止,我可以很好地将两个数据集绘制在一个直方图上,并通过在ax.hist() 中写入normed = 1 来强制两个分布的积分为1,如下图所示:
它是由这样的代码产生的:
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)
在一般情况下,一种概率分布比另一种高得多,因此很难清楚地阅读情节。
因此,我尝试对两者进行归一化,以使它们在 y 轴上的范围都在 0 到 1 之间,并且仍然保持它们的形状。例如,我尝试过以下代码:
for item in patches1:
item.set_height(item.get_height()/sum(x1))
取自 How to normalize a histogram in python? 此处的讨论,但 python 向我抛出一条错误消息,说没有 get_height 这样的质量。
我的问题很简单:我怎样才能让 y 轴的范围从 0 到 1 并保持两个分布的形状?
【问题讨论】:
标签: database matplotlib histogram bar-chart normalization