Python 如何限制scipy.stats.norm.pdf的打印值

Python 如何限制scipy.stats.norm.pdf的打印值,python,Python,我试图使用scipy.stats.norm绘制高斯PDF,但我只想绘制介于某些参数(btwn 0和20000)之间的y值。我不想改变PDF的形状,只是限制绘图的值 我尝试了以下代码的几种变体,但不断出现(可以理解的)错误: 这是有道理的,但我不知道如何得到我想要的结果。如果我尝试将y索引为y(I),则打印时存在尺寸不匹配,类似于a.any() 欢迎任何pythonic解决方案——我还是个新手,所以我可能忽略了一些显而易见的东西 x = np.linspace(0,20000,1000) y =

我试图使用scipy.stats.norm绘制高斯PDF,但我只想绘制介于某些参数(btwn 0和20000)之间的y值。我不想改变PDF的形状,只是限制绘图的值

我尝试了以下代码的几种变体,但不断出现(可以理解的)错误:

这是有道理的,但我不知道如何得到我想要的结果。如果我尝试将y索引为y(I),则打印时存在尺寸不匹配,类似于a.any()

欢迎任何pythonic解决方案——我还是个新手,所以我可能忽略了一些显而易见的东西

x = np.linspace(0,20000,1000)
y = norm.pdf(x, loc=3600, scale=2160)
if y in range(0,10000):
    y = z
plt.plot(x,z)
plt.savefig('continPDF')

如果您只想用这些参数绘制pdf,从最小输入值
0
到最大输入值
10000
,您只需执行以下操作:

y = norm.pdf(range(0,10001), loc=3600, scale=2160)
plt.plot(y)

编辑:根据@inon peled的评论,根据文档中的示例,请参见下面的
scipy.stats.truncnorm
演示:

为了简单起见,我从您的比例参数中提取了一些内容

from scipy.stats import truncnorm

loc = 3600
a, b = -1000, 1000

x = np.linspace(truncnorm.ppf(0, a, b, loc=loc),
                truncnorm.ppf(1, a, b, loc=loc), 10000)

for i in [a,b,0]:
    plt.axvline(loc+i, color='black', linestyle='--', alpha=0.5, lw=1)

annotations = ['loc+a','loc+b','loc']    

for i,j in zip(annotations,[a,b,0]):
    plt.annotate(I, (loc+j,0.0001830), fontsize=8, ha='center')   

plt.plot(x, truncnorm.pdf(x, a, b, loc=loc, scale=scale), 'r')

请注意,“截断高斯”的含义与某些值之间的高斯曲线图不同,因此您可能希望在问题中省略该术语:
from scipy.stats import truncnorm

loc = 3600
a, b = -1000, 1000

x = np.linspace(truncnorm.ppf(0, a, b, loc=loc),
                truncnorm.ppf(1, a, b, loc=loc), 10000)

for i in [a,b,0]:
    plt.axvline(loc+i, color='black', linestyle='--', alpha=0.5, lw=1)

annotations = ['loc+a','loc+b','loc']    

for i,j in zip(annotations,[a,b,0]):
    plt.annotate(I, (loc+j,0.0001830), fontsize=8, ha='center')   

plt.plot(x, truncnorm.pdf(x, a, b, loc=loc, scale=scale), 'r')