如何显示Random.gammavariate分布图?

时间:2017-04-14 15:43:04

标签: numpy matplotlib scipy distribution

我对所有不同的分布函数感到困惑(即numpy,scipy,matploglib.mlab和随机)

我正在尝试获取用于我的程序的伽玛分布数量的样本,并绘制出正在使用的分布。

到目前为止,我正在做:

import random
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import scipy.special as sps
import numpy as np

k = 2.0
theta = 2.0
random.gammavariate(k, theta) # this gives me results of the gamma distribution

# but unfortunately, this doesn't work
# plt.plot(random.gammavariate(k, theta))
# plt.show()

# but this works somehow even if I don't specify 
# what bins and y is - just copied from a https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.gamma.html
# and seems to work
s = np.random.gamma(k, theta, 1000)
plt.plot(bins, y, linewidth=2, color='r')

非常感谢任何帮助向我解释这一点。

1 个答案:

答案 0 :(得分:1)

您正在尝试绘制1维数据的曲线(或散点图)。 您可以通过绘制直方图来显示分布:

plt.hist(np.random.gamma(k, theta,100 ))

注意1000会给你1000分。 如果你想从直方图中提取信息,比如垃圾箱:

 count, bins, ignored = plt.hist(np.random.gamma(k, theta, 100))

然后您可以使用plt.plot进行绘图,并将2D作为输入:

plt.plot(bins, y)

其中y由下式给出:

import scipy.special as sps
import numpy as np
y = bins**(k-1)*(np.exp(-bins/theta) /(sps.gamma(k)*theta**k))

这是伽玛函数。