5

我打算让我正在编写的程序的一部分自动生成多个原始文本源上各种统计数据的高斯分布,但是我在按照以下指南生成图表时遇到了一些问题:

python pylab绘制正态分布图

情节代码的一般要点如下。

import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as pyplot

meanAverage = 222.89219487179491    # typical value calculated beforehand
standardDeviation = 3.8857889432054091    # typical value calculated beforehand

x = np.linspace(-3,3,100)
pyplot.plot(x,mlab.normpdf(x,meanAverage,standardDeviation))
pyplot.show()

它所做的只是产生一个相当扁平且无用的 y = 0 线!谁能看到这里有什么问题?

干杯。

4

3 回答 3

15

如果您阅读matplotlib.mlab.normpdf的文档,则该函数已被废弃,您应该改用scipy.stats.norm.pdf

2.2 版后已弃用:scipy.stats.norm.pdf

而且由于您的分布平均值约为 222,因此您应该使用np.linspace(200, 220, 100).

所以你的代码看起来像:

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

meanAverage = 222.89219487179491    # typical value calculated beforehand
standardDeviation = 3.8857889432054091    # typical value calculated beforehand

x = np.linspace(200, 220, 100)
pyplot.plot(x, norm.pdf(x, meanAverage, standardDeviation))
pyplot.show()
于 2018-05-22T12:16:11.470 回答
8

看起来你犯了一些小但重大的错误。您要么选择了错误的 x 向量,要么交换了 stddev 和均值。因为你的平均值是 222,你可能希望你的 x 向量在这个区域,可能是 150 到 300。这样你就得到了所有好的东西,现在你看到的是 -3 到 3,它位于分配。希望有帮助。

于 2012-10-14T00:19:53.977 回答
0

我看到,对于*args发送 meanAverage、standardDeviation 的,要发送的正确内容是:

mu : a numdims array of means of a

sigma : a numdims array of atandard deviation of a

这有帮助吗?

于 2012-10-13T23:07:55.147 回答