-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
4

2 回答 2

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

于 2012-10-18T16:16:20.240 回答
0

为了绘制适合您的数据的正态分布,您需要执行以下操作:

首先,您需要计算哪种正态分布最适合您的数据。在 scipy 中有norm.fit. 接下来,您只需要绘制具有给定属性(均值、标准差)的正态分布。

完整脚本:

# 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,)
于 2012-10-18T16:13:55.340 回答