Закройте уже существующие фигуры в matplotlib при работе от затмения

Мой вопрос прост: у меня есть скрипт python, который генерирует цифры, используя matplotlib. Каждый раз, когда я запускаю его, он генерирует новые окна с цифрами. Как я могу закрыть сценарий, который был открыт в предыдущий раз?

аналогичная команда в Matlab заключается в том, чтобы «закрыть все» в начале вашего скрипта matlab.

Я видел несколько предложений сделать что-то вроде

import matplotlib.pyplot as plt plt.close("all") 

Это решение работает, если вы запускаете свой скрипт из оболочки python, например, используя

 >>>> execfile("myScript.py") 

Однако я обнаружил, что это не работает, если я запускаю скрипт с помощью Eclipse / PyDev. Как я могу заставить его работать в Eclipse?

пример:

 from numpy import * from matplotlib.pyplot import * from scipy import * close("all") #close any previously open plots - this doesn't work when running via Eclipse t = linspace(0, 0.1,1000) w = 60*2*pi figure() plot(t,cos(w*t)) plot(t,cos(w*t-2*pi/3)) plot(t,cos(w*t-4*pi/3)) show() 

Это должно построить идеальные сигналы для хорошего 3-фазного источника питания.

2 Solutions collect form web for “Закройте уже существующие фигуры в matplotlib при работе от затмения”

Вы можете закрыть фигуру, вызвав matplotlib.pyplot.close , например:

 from numpy import * import matplotlib.pyplot as plt from scipy import * t = linspace(0, 0.1,1000) w = 60*2*pi fig = plt.figure() plt.plot(t,cos(w*t)) plt.plot(t,cos(w*t-2*pi/3)) plt.plot(t,cos(w*t-4*pi/3)) plt.show() plt.close(fig) 

Вы также можете закрыть все открытые цифры, вызвав matplotlib.pyplot.close("all")

См. Ответ Би Рико для общего дела Eclipse.

Для кого-то, как я, – кто приземляется здесь, потому что у вас много окон, и вы изо всех сил пытаетесь закрыть их, просто убить питона может быть эффективно, в зависимости от ваших обстоятельств. Вероятно, он работает практически в любых обстоятельствах, в том числе с Eclipse.

Я только породил 60 участков из emacs (я предпочитаю, чтобы затмить), а затем я думал, что мой скрипт вышел. Запуск close('all') в моем ipython окне не работал для меня, потому что графики не пришли из ipython, поэтому я прибегал к поиску запущенных процессов python.

Когда я убил интерпретатора, выполняющего сценарий, все 60 графиков были закрыты – например,

 $ ps aux | grep python rsage 11665 0.1 0.6 649904 109692 ? SNl 10:54 0:03 /usr/bin/python3 /usr/bin/update-manager --no-update --no-focus-on-map rsage 12111 0.9 0.5 390956 88212 pts/30 Sl+ 11:08 0:17 /usr/bin/python /usr/bin/ipython -pylab rsage 12410 31.8 2.4 576640 406304 pts/33 Sl+ 11:38 0:06 python3 ../plot_motor_data.py rsage 12431 0.0 0.0 8860 648 pts/32 S+ 11:38 0:00 grep python $ kill 12410 

Обратите внимание, что я не убивал мой ipython / pylab и не убивал диспетчера обновлений (убийство менеджера обновлений, вероятно, плохая идея) …

  • Как отлаживать Django unittests с помощью PyDev?
  • Удаленная отладка pydev - завершение кода в интерактивной консоли?
  • Можно ли настроить проверку ошибок Pylint?
  • Настройка пути к App Engine для PyDev на Mac
  • Тип подсказки в Eclipse с PyDev
  • Как интегрировать pep8.py в Eclipse?
  • PyDev больше не может отлаживать
  • Eclipse Pydev: Запустите выделенные строки кода
  • Python - лучший язык программирования в мире.