0

我对编码很陌生,我正在尝试创建一个钟形曲线高斯曲线,它创建条形宽度为 10 且数量为 30 的条形图。这是我目前使用的代码。

import numpy as np 
from matplotlib import pyplot as plt
from scipy.stats import norm 
domain = np.linspace(-2,2,1000)
bins = np.linspace(0, 10, 30)
plt.plot(domain, norm.pdf(domain,0,1), bins)
plt.show()

但是,当我绘制它们时,我得到两条线。我现在看到这是因为我使用的是 np.linspace但我怎样才能创建垃圾箱?

4

1 回答 1

1

如果您不熟悉编码,最好从使用定义的函数而不是导入的模块开始,这样您就知道自己在做什么

让我们从定义高斯 PDF 函数开始:

import numpy as np
def gauss(x, mu, sigma, scale):
    return scale*np.exp(-(x-mu)**2/(2*sigma**2))

然后定义您的域:

x = np.arange(start,end,step)

其中 start 和 end 是您的域的开始和结束,而 step 是您的“binsize”。否则,您可以使用:

x = np.linspace(start,end,nbins)

这是不言自明的。

然后您可以使用定义的函数计算 pdf 值并绘制它们

import matplotlib.pyplot as plt
y = gauss(x,0,1,1)
y2 = gauss(x,0,5,1)
fig,ax = plt.subplots()
ax.plot(x,y,'r',label='Normal PDF')
ax.plot(x,y2,'k',label='Sigma is 5')
plt.legend()
plt.show()
于 2020-06-03T18:32:33.610 回答