在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张图像被发布到控制台,冻结了我的机器。
发布于 2018-08-31 21:05:25
好的,我想我找到了答案,多亏了这个答案;
https://stackoverflow.com/a/46360516/789215
关键是用于magics 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()
还是有更好的方法?
https://stackoverflow.com/questions/52115896
复制相似问题