2012-10-18 46 views
-5

我有一些數據(TEMP_2),我想獲得該數據的分佈。我知道如何使用直方圖:現有數據的分佈

import numpy as np 
from pylab import * 

plt.figure(1) 
data1 = loadtxt("TEMP_2") 

a= data1[:,1] 
plt.hist(a,100, normed=True,) 
show() 

但是,我想要一個分佈。任何人都可以請幫助我這個..

數據文件:

1000 299.23 
2000 310.56 
3000 308.21 
4000 305.86 
5000 305.21 
6000 301.35 
7000 295.37 
8000 307.80 
9000 295.61 
:  : 
:  : 
200000 307.18 
+2

你必須要更具體的瞭解你想要什麼。原始數據本身就是一個(非常具體的)分佈 –

+0

我想獲得分佈圖而不顯示分箱。只是,一條線分佈圖 –

+0

什麼是「垃圾桶」? – jsalonen

回答

0

爲了繪製正態分佈適合你的數據,你需要做到以下幾點:

首先,你需要計算,這種正態分佈最適合您的數據。在scipy有norm.fit。接下來,您只需要繪製具有給定屬性(mean,stdev)的正態分佈。

完整的腳本:

# Load data 
import numpy as np 
from pylab import * 
data1 = loadtxt("TEMP_2") 
a = data1[:,1] 

# Fit data into normal distribution 
from scipy.stats import norm 
mean, stdev = norm.fit(a) 

# Plot normal distribution 
import matplotlib.mlab as mlab 
x = np.linspace(min(a), max(a), 100) 
plot(x, mlab.normpdf(x, mean, stdev)) 
show() 

結果:

Plot screenshot

如果你要繪製的 「箱」 也一樣,那麼就plot.show()前添加:

plt.hist(a, len(data1), normed=True,) 
+0

看起來不錯!非常感謝jsalonen! –

+0

不客氣。請注意,由於我發現你的問題非常模糊,我真的不確定這是否是正確的分配情節。 – jsalonen

+0

高斯分佈是我尋找的一個..之前沒有提及它......我想我們是在正確的頁面......謝謝! –

1

嘗試與:

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

mean, sigma = norm.fit(data) #your data here 
x = np.linspace(-3,3,100) 
plt.plot(x,mlab.normpdf(x,mean,sigma)) 

plt.show() 

如下所述:python pylab plot normal distribution

+0

謝謝luke14free!它非常棒! –