【问题标题】:Can I prevent Spyder from displaying inline images temporarily?我可以暂时阻止 Spyder 显示内联图像吗?
【发布时间】:2025-12-17 07:25:01
【问题描述】:

在 Spyder IDE 中,我想保留内联控制台绘图(我不想为每个绘图生成单独的窗口),但我想以编程方式禁用绘图,即在不同的单元格中。

在我的工作流程中,我需要绘制一些简单的图形,然后生成图形并将它们保存为视频帧(数千个)。我的框架是通过加载 jpg 图像创建的,然后覆盖一些注释,即;

for jpg_path in path_list:
    img = mpl.image.imread(jpg_path)
    ax.imshow(img)
    ax.text(etc...)
    fig.savefig(etc...)

我想保留内联后端; %matplotlib inline.

但是用plt.ioff()之类的东西关闭绘图。

plt.ioff()仅适用于%matplotlib qt后端,而不是inline

我遇到过几次忘记更改为 %matplotlib qt 的情况(因为它不是 python 命令,我必须将它单独输入到控制台中),然后是 plt.ioff() - 导致 10000 张图片被张贴在控制台,冻结我的机器。

【问题讨论】:

标签: python matplotlib ipython spyder


【解决方案1】:

好的,多亏了这个答案,我想我找到了答案;

https://*.com/a/46360516/789215

关键是行魔法get_ipython().run_line_magic('matplotlib', 'inline') 的python 命令。我创建了一个上下文管理器来包装我的视频帧 for-loop;

from IPython import get_ipython

class NoPlots:
    def __enter__(self):
        get_ipython().run_line_magic('matplotlib', 'qt')
        plt.ioff()
    def __exit__(self, type, value, traceback):
        get_ipython().run_line_magic('matplotlib', 'inline')
        plt.ion()

或者有更好的方法吗?

【讨论】:

    最近更新 更多