我对编码非常陌生,我正在尝试创建一个钟形高斯曲线,以创建条形宽度为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 但是如何创建垃圾箱?
如果您不熟悉编码,最好先使用定义的函数而不是导入的模块,所以您知道自己在做什么
首先定义高斯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)
[开始和结束是域的开始和结束,步骤是您的“ 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()