Numpy 如何显示随机伽马变量分布图?

Numpy 如何显示随机伽马变量分布图?,numpy,matplotlib,scipy,distribution,Numpy,Matplotlib,Scipy,Distribution,我对所有不同的分布函数都有点困惑,比如numpy、scipy、matploglib.mlab和random 我正试图获得一个伽马分布数的抽样,用于我的程序,同时也绘制出正在使用的分布 到目前为止,我正在做: 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 r

我对所有不同的分布函数都有点困惑,比如numpy、scipy、matploglib.mlab和random

我正试图获得一个伽马分布数的抽样,用于我的程序,同时也绘制出正在使用的分布

到目前为止,我正在做:

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')

非常感谢您为我解释这一点提供的任何帮助。

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

plt.hist(np.random.gamma(k, theta,100 ))
注意1000分会给你1000分。 如果要从柱状图中提取信息,如箱子:

 count, bins, ignored = plt.hist(np.random.gamma(k, theta, 100))
然后,您可以使用plt.plot进行绘图,该plt将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))

这是伽马函数。

好的,谢谢您的回答。我不确定在plt.plot中放置什么。运行plt.hist.plt.hist后,plt.plt将绘制垃圾箱。之后无需再进行plt.plot。确切地说,plt.plot将根据您的分发箱以传统的线图形式绘制相应的分发。但这会产生误导。如果你想的话,你应该计算一个KDE。我只是参考了scipy函数并试图解释它。但是你是对的,谢谢你指出了它。同时也画出了正在使用的分布。您是要绘制随机样本的直方图,还是要绘制从中提取样本的基础分布的PDF或CDF,如中所示的图?