Мне нужно создать фигуру в файле, не отображая ее в блокноте IPython. Я не совсем понимаю взаимодействие между IPython
и matplotlib.pylab
в этом отношении. Но когда я вызываю pylab.savefig("test.png")
текущую цифру, она отображается в дополнение к сохранению в test.png
. При автоматизации создания большого набора файлов чертежей это часто нежелательно. Или в ситуации, когда требуется промежуточный файл для внешней обработки другим приложением.
Не уверен , если это matplotlib
или IPython
вопрос ноутбука.
ioff
Ответы:
Это вопрос matplotlib, и вы можете обойти это, используя бэкэнд, который не отображается пользователю, например, Agg:
РЕДАКТИРОВАТЬ: если вы не хотите терять возможность отображать графики, отключите интерактивный режим и звоните только
plt.show()
тогда, когда вы готовы отобразить графики:источник
close()
иshow()
командах и, которые должны решить вашу проблему. изменение серверных модулей на лету, как вы обнаружили, не поддерживается.plt.plot()
если включен интерактивный режим. Выключение интерактивного режима откладывает отображение любых графиков доplt.show()
. Поскольку вы используете ноутбук ipython, интерактивный режим обрабатывается иначе.matplotlib.use('Agg')
одно помогло. Мне он вообще не нуженplt.show()
иplt.ioff()
в моем коде.Нам не нужно
plt.ioff()
илиplt.show()
(если мы используем%matplotlib inline
). Вы можете протестировать приведенный выше код безplt.ioff()
.plt.close()
играет важную роль. Попробуй это:Если вы запустите этот код в iPython, он отобразит второй график, а если вы добавите
plt.close(fig2)
его в конец, вы ничего не увидите.В заключение, если закрыть фигуру
plt.close(fig)
, она не будет отображаться.источник
plt.ioff
я получаюRuntimeWarning: More than 20 figures have been opened...
.plt.close
решил это.