Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 规范化多数据直方图_Python_Numpy_Matplotlib_Histogram_Normalize - Fatal编程技术网

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与之成比例。