我有一些数据(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
答案 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()
答案 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.show()
之前添加:
plt.hist(a, len(data1), normed=True,)