我可以暂时阻止Spyder显示内嵌图像吗?

2024-05-23 15:38:25 发布

您现在位置:Python中文网/ 问答频道 /正文

在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后端,而不是{}!在

我有过几次忘记改成%matplotlib qt(因为它不是python命令,我必须单独地将它输入控制台),然后plt.ioff()-结果在控制台中发布了10000个图像,冻结了我的机器。在


Tags: path图像图形绘图imgmatplotlib编程etc
1条回答
网友
1楼 · 发布于 2024-05-23 15:38:25

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

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

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

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()

或者有更好的方法吗?在

相关问题 更多 >