现有数据的分发

时间:2012-10-18 15:38:10

标签: python

我有一些数据(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 :(得分: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

答案 1 :(得分: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,)