2013-11-15 74 views
21

我有一个1个三维Minkowski空间阵列和我可以计算该样品的“平均”和“标准差”和绘制“正态分布”但我有一个问题:拟合正态分布至1D数据

我要绘制在同一个图中的数据和正态分布象下面这样:

我不知道如何绘制无论是“DATA”和“正态分布”

约“SciPy的高斯概率密度函数任何想法.stats“?

s = np.std(array) 
m = np.mean(array) 
plt.plot(norm.pdf(array,m,s)) 
+2

你尝试过这么远吗?请发布迄今为止的代码,以便我们可以回答关于它的具体问题。 – Garth5689

回答

52

您可以使用matplotlib绘制直方图和PDF(如在@ MrE的答案中的链接)。为了拟合和计算PDF,您可以使用scipy.stats.norm,如下所示。

import numpy as np 
from scipy.stats import norm 
import matplotlib.pyplot as plt 


# Generate some data for this demonstration. 
data = norm.rvs(10.0, 2.5, size=500) 

# Fit a normal distribution to the data: 
mu, std = norm.fit(data) 

# Plot the histogram. 
plt.hist(data, bins=25, normed=True, alpha=0.6, color='g') 

# Plot the PDF. 
xmin, xmax = plt.xlim() 
x = np.linspace(xmin, xmax, 100) 
p = norm.pdf(x, mu, std) 
plt.plot(x, p, 'k', linewidth=2) 
title = "Fit results: mu = %.2f, std = %.2f" % (mu, std) 
plt.title(title) 

plt.show() 

下面是由脚本生成的情节:

Plot

+0

没有scipy模块可以做到这一点吗? – maro

+0

@maro是的。适合正态分布很简单。你可以用mu = np.mean(data)来替换'mu,std = norm.fit(data)'; std = np.std(data)'。如果要在图中绘制该曲线,则必须实现正态分布的PDF版本。 –