在python中使用fill_between对密度曲线的子区域进行着色

在python中使用fill_between对密度曲线的子区域进行着色,python,matplotlib,Python,Matplotlib,我想在正态分布的一个子部分之间填充_,比如说左边的5% import numpy as np import matplotlib.pyplot as plt from scipy import stats as stats plt.style.use('ggplot') mean=1000 std=250 x=np.linspace(mean-3*std, mean+3*std,1000) iq=stats.norm(mean,std) plt.plot(x,iq.pdf(x),'b') 到目

我想在正态分布的一个子部分之间填充_,比如说左边的5%

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats as stats
plt.style.use('ggplot')
mean=1000
std=250
x=np.linspace(mean-3*std, mean+3*std,1000)
iq=stats.norm(mean,std)
plt.plot(x,iq.pdf(x),'b')
到目前为止很好

然后我设置px来填充x=0到500之间的区域

px=np.arange(0,500,10)
plt_fill_between(px,iq.pdf(px),color='r')
问题是,上面的内容只会以红色显示0到500之间的pdf。 我想显示从0到2000的完整pdf,其中0到500是阴影?
你知道如何创建它吗?

如果你想转到2000,你只能在你的np.arange中使用0到500之间的x值写:

px=np.arange(0,2000,10)
plt.fill_between(px,iq.pdf(px),color='r')

如前所述,您需要使用
plt.fill\u-between
而不是
plt\u-fill\u-between
。当这样做时,输出看起来像这样,这似乎正是您要寻找的

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats as stats
plt.style.use('ggplot')
mean=1000
std=250
x=np.linspace(mean-3*std, mean+3*std,1000)
iq=stats.norm(mean,std)
plt.plot(x,iq.pdf(x),'b')

px=np.arange(0,500,10)
plt.fill_between(px,iq.pdf(px),color='r')

plt.show()

您需要使用
plt.fill\u-between
而不是
plt\u-fill\u-between
。当你这样做的时候,输出看起来正是你想要的。非常感谢你的回复。plt\u fill\u between是这篇文章中的一个打字错误。在我的实际代码中,我有plt.fill_,结果与您发送给我的不一样。图表在500后被截断。我提供了这个答案。无法从该代码中截断图形。谢谢Randrian。我尝试了这个,结果是整个分布0到2000现在被着色了。我只想要0到500的阴影,同时显示完整的0到2000分布。再次感谢。我在IPython控制台上的Spyder中逐行运行代码,生成了截断图。我将其作为脚本单独运行,包括最后的plt.show(),这产生了您的结果。非常感谢。@KimonG如果这个答案解决了你的问题,请