y轴以某种方式标准化,曲线下面积为1.
如果使用normed = True进行标准化,那么为每个数据点添加相等的权重是没有意义的.
首先,您需要将数据转换为0:
lines -= mean(lines)
然后绘制它.
这应该是一个有用的最小例子:
import numpy as np
from numpy.random import normal
import matplotlib.pyplot as plt
from scipy.stats import norm
# gaussian distributed random numbers with mu =4 and sigma=2
x = normal(4, 2, 10000)
mean = np.mean(x)
sigma = np.std(x)
x -= mean
x_plot = np.linspace(min(x), max(x), 1000)
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.hist(x, bins=50, normed=True, label="data")
ax.plot(x_plot, norm.pdf(x_plot, mean, sigma), 'r-', label="pdf")
ax.legend(loc='best')
x_ticks = np.arange(-4*sigma, 4.1*sigma, sigma)
x_labels = [r"${} \sigma$".format(i) for i in range(-4,5)]
ax.set_xticks(x_ticks)
ax.set_xticklabels(x_labels)
plt.show()
输出图像是这样的:
你有太多的进口.你导入小数两次,甚至一次*然后numpy,pyplot和scipy包含在pylab中.也是为什么导入整个scipy.stats然后再次从它导入规范?