Самый простой способ убедиться, что все ваши строки попадают в окно правильной фигуры, это что-то вроде:
from six.moves import input
import matplotlib.pyplot as plt
another = True
while another:
fig, ax = plt.subplots()
ax.plot(range(5))
fig.canvas.manager.show()
# this makes sure that the gui window gets shown
# if this is needed depends on rcparams, this is just to be safe
fig.canvas.flush_events()
# this make sure that if the event loop integration is not
# set up by the gui framework the plot will update
another = bool(input("would you like another? "))
Если вы хотите запустить это с помощью не-gui-сервера, вам нужно будет удалить flush_events
вызовите или заверните его в папку try: ... except NotImplementedError
. Большая часть этого осложнения - защитное программирование, потому что GUI могут быть трудными, и поведение этого кода может зависеть от многих факторов, которые не очевидны из показанного кода.
Использование неявных осей pyplot
может привести к проблемы, поскольку «текущие оси» задаются последними осями, на которые пользователь нажал. Вы действительно должны использовать pyplot
только при интерактивном вводе в rpel и почти никогда (кроме plt.subplots
) в скриптах / программах.