Python 规范化多数据直方图
我有几个数组,我正在绘制直方图,如下所示:Python 规范化多数据直方图,python,numpy,matplotlib,histogram,normalize,Python,Numpy,Matplotlib,Histogram,Normalize,我有几个数组,我正在绘制直方图,如下所示: import numpy as np import matplotlib.pyplot as plt x = np.random.normal(0,.5,1000) y = np.random.normal(0,.5,100000) plt.hist((x,y),normed=True) 当然,这将分别规范化两个数组,以便它们都具有相同的峰值。我希望将它们规范化为元素总数,以便y的直方图明显高于x的直方图。在matplotlib中有没有一种简便的
import numpy as np
import matplotlib.pyplot as plt
x = np.random.normal(0,.5,1000)
y = np.random.normal(0,.5,100000)
plt.hist((x,y),normed=True)
当然,这将分别规范化两个数组,以便它们都具有相同的峰值。我希望将它们规范化为元素总数,以便y
的直方图明显高于x
的直方图。在matplotlib中有没有一种简便的方法来实现这一点,还是我必须在numpy中胡闹?我还没有找到关于它的任何东西
另一种说法是,如果我对这两个数组进行累积绘图,它们不应该都加在1上,而应该加在1上。是的,你可以用numpy计算直方图,然后重新标准化它
x = np.random.normal(0,.5,1000)
y = np.random.normal(0,.5,100000)
xhist, xbins = np.histogram(x, normed=True)
yhist, ybins = np.histogram(x, normed=True)
现在,你应用你的正则化。例如,如果希望将x规格化为1,y成比例:
yhist *= len(y) / len(x)
现在,绘制直方图:
def plot_histogram(data, edge_bins, **kwargs):
bins = edge_bins[:-1] + edge_bins[1:]
plt.step(bins, data, **kwargs)
plot_histogram(xhist, xbins, c='b')
plot_histogram(yhist, ybins, c='g')
谢谢!但是,“放大y”步骤是否应该类似于
y*=len(y)/(len(x)+len(y))
?看起来您想要的是整个数据集中y的分数。@user3692905是的,应用您认为合适的归一化。在我的例子中,我将x归一化为1,y与之成比例。