2014-01-19 25 views
1

我有一个问题,使用pyplot。我对Python很陌生,所以很抱歉,如果我犯了一些明显的错误。保持不工作pyplot

在我使用pyplot绘制了一些内容之后,它会显示图形,但是当我尝试添加例如ylabel它不会更新当前图形。它会生成一个只包含ylabel的新图,而不是以前输入的信息。所以对我来说,识别当前的图形/轴似乎是一个问题,但ishold提供了一个True语句。

我的设置是在Python(x,y)中的Python 2.7。在Spyder IDE和IPython Qt控制台中都会出现这个问题。然而,它并没有出现在常规的IPython控制台中(通过对比,它不是交互式的,但是当使用show()时,所有东西都包含在内。当我在Spyder/Qt控制台中关闭交互时,它不会在使用show )命令)。

import matplotlib.pyplot as plt 

plt.plot([1,2,3,4]) 
Out[2]: [<matplotlib.lines.Line2D at 0x78ca370>] 
 

plt.ylabel('test') 
Out[3]: <matplotlib.text.Text at 0x5bd5990> 
 

plt.ishold() 
Out[4]: True 


matplotlib.get_backend() 
Out[6]: 'module://IPython.kernel.zmq.pylab.backend_inline' 

希望你们任何人都有一些意见。谢谢。

回答

1

这是InlineBackend必须与其他后端行为不同的事情之一,或者您会有内存泄漏。你必须明确处理matplotlib图和/或在配置中设置close_figureFalse。通常pyplot是matlab的一个兼容层,为了方便起见,尽量学会使用面向对象的方法。

fig,ax = subplots() 
ax.plot(range(4)) 
ax.set_ylabel('my label') 
... 
+0

我会用'''OO'方式'而不是'matplotlib方式'。 – tacaswell

+0

是的,谢谢,大脑在大西洋飞行后会感到疲倦。 – Matt