保持不适用于pyplot

时间:2014-01-19 17:04:42

标签: python matplotlib ipython pythonxy

我使用pyplot时遇到问题。我是Python的新手,很抱歉,如果我做了一些明显的错误。

在使用pyplot绘制了一些内容后,它会显示图表,但是当我尝试添加例如ylabel它不会更新当前图表。它导致只有ylabel的新图形,而不是之前输入的信息。所以对我而言,识别当前图形/轴似乎是一个问题,但ishold提供了一个真实的声明。

我的设置是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 个答案:

答案 0 :(得分:1)

这是InlineBackend必须表现出与其他后端不同的行为之一,否则你会有一些内存泄漏。您必须保持对matplotlib图的显式处理和/或在配置中将close_figure设置为False。通常pyplot是matlab的兼容层,为方便起见,尝试学习使用面向对象的方式。

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