Python-如何在多个直方图上具有相同的最大值

Python-如何在多个直方图上具有相同的最大值,python,matplotlib,plot,histogram,Python,Matplotlib,Plot,Histogram,比如说,我有两种不同的分布 a=N.random.normal(0,0.5,500) b=N.random.normal(1,3.,500) 我想做一个直方图,最大值在同一水平 如果我用density=True参数制作标准化直方图,它将使两个直方图的面积都为1,但它不会改变最大值不同的事实 P.hist(a, histtype='step', lw=2, cumulative=True) P.hist(b, histtype='step', color='r', lw=2, den

比如说,我有两种不同的分布

a=N.random.normal(0,0.5,500)      
b=N.random.normal(1,3.,500)
我想做一个直方图,最大值在同一水平

如果我用density=True参数制作标准化直方图,它将使两个直方图的面积都为1,但它不会改变最大值不同的事实

P.hist(a, histtype='step', lw=2, cumulative=True)
P.hist(b, histtype='step', color='r', lw=2, density=True)


我想要的是制作一个直方图,其中它是“标准化”的最大值。我的意思是当蓝色和红色直方图的最大值相同时,比较它们就很容易了。非常感谢您的帮助。

以下代码将为
a
提供与
b
相同的最大值:

a *= b.max()/a.max()

a中的累积标志可能会打破这一点,并且应该在生成直方图之前放置它。

我不确定我是否真的会这样做,但如果你想这样做,我认为最好的方法是添加两个轴(这样你就可以看到它们到底有多高)。例如,请参见此处:

这将产生以下输出(我认为,这看起来比您获得的结果更糟;我还将第一个图中的累积=真更改为密度=真,以与您提供的图一致):

而且,严格地说,这并不能确保最大值是完全相同的。如果你想这样做,你可以通过这样做来强迫它

import numpy as np
from matplotlib import pyplot as plt
fig, ax1 = plt.subplots()
n1, _, _ = ax1.hist(a, histtype='step', color='b', lw=2, density=True)
ax1.tick_params(axis='y', labelcolor='b')
ax2 = ax1.twinx()
n2, _, _ = ax2.hist(b, histtype='step', color='r', lw=2, density=True)
ax2.tick_params(axis='y', labelcolor='r')
ax1.set_ylim([0, n1.max()*1.1])
ax2.set_ylim([0, n2.max()*1.1])

嗨,谢谢你的回答,但这不是我真正需要的。我想要的是所有分布都有相同的最大值,但不改变标准偏差谢谢,这太棒了!
import numpy as np
from matplotlib import pyplot as plt
fig, ax1 = plt.subplots()
n1, _, _ = ax1.hist(a, histtype='step', color='b', lw=2, density=True)
ax1.tick_params(axis='y', labelcolor='b')
ax2 = ax1.twinx()
n2, _, _ = ax2.hist(b, histtype='step', color='r', lw=2, density=True)
ax2.tick_params(axis='y', labelcolor='r')
ax1.set_ylim([0, n1.max()*1.1])
ax2.set_ylim([0, n2.max()*1.1])