1

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

在我使用 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'

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

4

1 回答 1

1

这是 InlineBackend 的行为必须与其他后端不同的事情之一,否则您将有某种内存泄漏。您必须保留对 matplotlib 图形的显式句柄和/或在配置中设置close_figureFalse。通常 pyplot是matlab的兼容层,为了方便,尽量学着用面向对象的方式来做。

fig,ax = subplots()
ax.plot(range(4))
ax.set_ylabel('my label')
...
于 2014-01-19T17:39:03.880 回答