2016-11-04 6 views
3

Я потратил более часа на поиск, просто чтобы понять эту простую вещь. Поэтому, прежде чем рассматривать этот дублирующий вопрос, пожалуйста, сравните мой вопрос с любым вопросом.Python MatPlotlib-Закрыть рисунок - PyCharm

Это мой код:

import pandas 
import matplotlib.pyplot as plt 

dataset = pandas.read_csv('international-airline-passengers.csv', usecols=[1], engine='python', skipfooter=1) 
print dataset, type(dataset) 
plt.plot(dataset) 
plt.show() 
plt.close() 

Во-первых, plt.show() в моем понимании является функцией блокировки. Итак, каков способ закрыть фигуру. Нет смысла писать plt.close() после него. Итак, где это правильный способ.

Во-вторых, как я могу убедиться, что все окна закрыты, когда я выполняю новый процесс с тем же кодом python. Например, в MATLAB можно легко сказать закрыть все в начале своего файла и закрыть все открытые графики, которые были результатом предыдущего выполнения кода MATLAB. plt.close('all') не работает.

Я использую PyCharm. Результаты, которые я нашел для первой ситуации, могут работать на IDLE, но не в PyCharm. Как я могу сделать это pyCharm.

ответ

0

Существует два способа запуска matplotlib, не интерактивных и интерактивных. В неинтерактивном режиме по умолчанию вы правы, что plt.show() блокирует. В этом случае вызов plt.close() бессмысленен, код не останавливается, пока фигура открыта. Однако в интерактивном режиме (который может быть триггером на plt.ion()), этот код откроется, а затем сразу закроет рисунок. Вам нужно будет положить что-то, чтобы ждать ввода пользователя, если вы запускаете такой код в скрипте. Интерактивный режим, как следует из названия, больше предназначен для работы в интерактивном режиме, а не в скрипте.

Что касается закрывающих фигур из нескольких прогонов сценария python, это невозможно. Если вы открываете несколько экземпляров MATLAB, close all в одном экземпляре не будет закрывать цифры в другом экземпляре. Выполнение нескольких процессов одного и того же кода python такое же, как открытие нескольких экземпляров MATLAB, один запуск не знает других.

+0

Может быть, я ошибочно использовал слово process. В MATLAB, если вы закрываете все строки поверх кода. Запустите код - который открывает фигуру. Запустите код еще раз, открывшаяся фигура закрывается. Разве я не могу это сделать в Python? Здесь я не открываю несколько экземпляров MATLAB. Тот же экземпляр работает с тем же кодом дважды. –

+0

@JeshKundem Правильно, но если вы запускаете скрипт python несколько раз, вы открываете несколько экземпляров python. Поэтому я хочу сказать, что запуск сценария python несколько раз эквивалентен запуску скрипта MATLAB в отдельных экземплярах MATLAB. Если вы хотите запустить один и тот же код несколько раз в одном экземпляре python, вы должны использовать функцию, а не скрипт, и вы должны запустить ее из оболочки python. Или еще лучше использовать что-то вроде ноутбука ipython/jupyter, чтобы сохранить все ваши коды и рисунки. – TheBlackCat

Смежные вопросы