matplotlib - 轴未显示时消失的曲线

时间:2015-09-27 20:38:30

标签: python matplotlib

使用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)    

这会输出预期结果:

2d vector

然而,一旦我取消注释,

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) 

我明白了:

with frame

为什么曲线会消失?

1 个答案:

答案 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)))