我如何创建遵循高斯函数形状的垃圾箱?

问题描述 投票:0回答:1

我对编码非常陌生,我正在尝试创建一个钟形高斯曲线,以创建条形宽度为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 但是如何创建垃圾箱?

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

[开始和结束是域的开始和结束,步骤是您的“ 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()
© www.soinside.com 2019 - 2024. All rights reserved.