Документация по «интерактивному режиму» в pyplot Matplotlib гласит:
Интерактивное свойство интерфейса pyplot определяет, рисуется ли холст фигуры при каждой команде pyplot.Если интерактивный имеет значение False, то состояние фигуры обновляется при каждой команде заговора, но будет отображаться только при явных вызовах draw ().Когда интерактив имеет значение True, то каждая команда pyplot запускает отрисовку.
Это кажется достаточно ясным: когда включен интерактивный режим, можно выполнить plot()
без необходимости draw()
.Однако выполнение draw () в следующем коде ничего не делает:
from matplotlib import pyplot as pp
# Interactive mode is off by default
pp.plot([10, 20, 50])
pp.draw()
raw_input('Press enter...') # No graph displayed?!!
(в Windows XP, Matplotlib 1.0.1).
Добавление ion()
в начале делаетфигуры появляются во время ожидания ввода пользователем ввода (который удобно закрывает все цифры):
from matplotlib import pyplot as pp
ion()
pp.plot([10, 20, 50]) # No draw() is necessary
raw_input('Press enter...') # The graph is interactive *and* the terminal responds to enter
Таким образом, похоже, что ion()
делает больше , чем простодобавление автоматических обновлений графиков после каждой команды построения, и я, к сожалению, не могу найти ничего в документации.Другая, более важная проблема с последней программой состоит в том, что ion()
заставляет все команды построения обновлять график, что занимает много времени, когда один график обновляется несколько раз.
Итак, есть ли способ:
- с терминалом, ожидающим ввода, после чего все фигуры автоматически закрываются,
- с интерактивными графами Matplotlib,
- … без принудительного включения интерактивного режимав начале (чтобы не вызывать автоматическое обновление графиков, что может занять много времени)?