Могу ли я запретить Spyder временно показывать встроенные изображения? - PullRequest
0 голосов
/ 31 августа 2018

В IDE Spyder я хочу сохранить построение встроенной консоли (я не хочу, чтобы отдельные окна появлялись для каждого графика), но я хочу программно отключить построение графиков, то есть в разных ячейках.

В моем рабочем процессе мне нужно построить несколько простых графиков, а затем сгенерировать фигуры и сохранить их как видеокадры (многие тысячи). Мои кадры создаются путем загрузки изображения 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 изображений были опубликованы в консоль, заморозив мою машину.

1 Ответ

0 голосов
/ 31 августа 2018

Хорошо, я думаю, что нашел ответ, благодаря этому ответу;

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

Ключом была команда python для магических линий get_ipython().run_line_magic('matplotlib', 'inline'). Я создал менеджер контекста, чтобы обернуть мой видеокадр для цикла;

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

Или есть лучший подход?

...