使用matplotlib进行绘图时遇到了这种奇特的行为:
mean = 0
variance = np.linspace(0.5, 1, 3)
x = np.linspace(-3,3,100)
for var in variance:
plt.plot(x,mlab.normpdf(x,mean,np.sqrt(var)))
#plt.axes(frameon = False)
这会输出预期结果:
然而,一旦我取消注释,
mean = 0
variance = np.linspace(0.5, 1, 3)
x = np.linspace(-3,3,100)
for var in variance:
plt.plot(x,mlab.normpdf(x,mean,np.sqrt(var)))
plt.axes(frameon = False)
我明白了:
为什么曲线会消失?
答案 0 :(得分:1)
问题是plt.axes
在全球状态下做了令人惊讶的事情。第一次拨打plt.plot
即可创建一个新的Axes
,然后调用plt.axes
即可创建新 Axes
,第二次调用{ {1}}绘制到新轴,然后调用plt.plot
会返回相同的 plt.axes
对象,因为它最后一次被调用(因为它跟踪了什么是轴的'签名',如果没有,则不会重新创建它),然后第三个Axes
绘制到与plt.plot
的第二个调用相同的轴。
修改代码
plt.plot
但最好这样做
from matplotlib import mlab
import numpy as np
mean = 0
variance = np.linspace(0.5, 1, 3)
x = np.linspace(-3,3,100)
plt.axes(frameon = False)
for var in variance:
plt.plot(x, mlab.normpdf(x,mean,np.sqrt(var)))