【问题标题】:Hold is not working for pyplotHold 不适用于 pyplot
【发布时间】:2014-01-19 17:04:41
【问题描述】:

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

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

【问题讨论】:

    标签: python matplotlib ipython pythonxy


    【解决方案1】:

    其中一件事是 InlineBackend 的行为必须与其他后端不同,否则就会出现内存泄漏。您必须保持对 matplotlib 图形的显式句柄和/或在配置中将 close_figure 设置为 False。通常pyplot是matlab的兼容层,为了方便,尽量学着用面向对象的方式来做。

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

    【讨论】:

    • 我会使用短语“'OO'-方式”而不是“matplotlib 方式”。
    • 是的,谢谢,跨大西洋飞行后大脑很累。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    • 2023-01-21
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    相关资源
    最近更新 更多