Python 3.x Python-用数据列表绘制正态分布线

Python 3.x Python-用数据列表绘制正态分布线,python-3.x,math,machine-learning,Python 3.x,Math,Machine Learning,我正在从事电气工程项目,该项目需要绘制数据列表的正态分布 我们随机测量了30个电阻器的电阻并记录下来 X=[14.95,14.94,14.92,14.98,16.53,14.96,16.20,14.32,15.32,14.25,15.36,14.95,15.13,14.26,14.94,15.6, 15.20,14.94,15.02,15,14.62,14.94,14.94,14.98,15.12,15.06,14.95,14.96,15.13,15.20] 我想得到这样的图: 但我得到的图是

我正在从事电气工程项目,该项目需要绘制数据列表的正态分布

我们随机测量了30个电阻器的电阻并记录下来

X=[14.95,14.94,14.92,14.98,16.53,14.96,16.20,14.32,15.32,14.25,15.36,14.95,15.13,14.26,14.94,15.6, 15.20,14.94,15.02,15,14.62,14.94,14.94,14.98,15.12,15.06,14.95,14.96,15.13,15.20]

我想得到这样的图:

但我得到的图是这样的:

我必须在数据接近平均值的图形中获得更多的值

这是我目前使用的代码:

将numpy导入为np
从matplotlib导入pyplot作为plt
输入数学
X=[14.95,14.94,14.92,14.98,16.53,14.96,16.20,14.32,15.32,14.25,15.36,14.95,15.13,14.26,14.94,15.6,
15.20, 14.94, 15.02, 15, 14.62, 14.94, 14.94, 14.98, 15.12, 15.06, 14.95, 14.96, 15.13, 15.20]
X=np.sort(X)
平均值=np.平均值(X)
西格玛=0
对于X中的i:
sigma+=np.平方(平均值-i)
sigma=np.sqrt(sigma/(len(X)-1))
def func(x):
返回np.exp(np.square(x-均值)/(2*np.square(sigma))/np.sqrt(2*math.pi*sigma)
Y=[]
对于X中的i:
Y.append(func(i))
plt.绘图(X,Y,marker='o',color='b')

plt.show()
假设我正确理解了您的问题,我认为您只是试图添加更多数据点以生成正态分布曲线

mu = np.mean(X)
sigma = np.std(X) #You manually calculated it but you can also use this built-in function
data = np.random.normal(mu, sigma, SIZE_OF_DATA_YOU_NEED)
然而,如果你也只是试图形成正态分布曲线,你不能仅仅根据概率密度函数绘制每个值

试一试

可能也想将X与新数据点连接起来

希望这能在某种程度上有所帮助,同时附加到numpy.random.normal()的链接,以防它在某种程度上有所帮助()

count, bins, ignored = plt.hist(data, 30, normed=True)
plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) * np.exp( - (bins - mu)**2 / (2 * sigma**2) ),linewidth=2, color='r')
plt.show()