Если я вызываю plt.show() перед вызовом plt.imshow (i), тогда возникает ошибка. Если я вызываю plt.imshow (i) до , вызывая plt.show(), то все работает отлично.
plt.show()
отображает фигуру (и входит в mainloop того же бэкэнда, который вы используете). Вы не должны называть его до тех пор, пока вы не замышляете вещи и не хотите, чтобы их отображали.
plt.imshow()
рисует изображение на текущей фигуре (при создании фигуры нет текущей фигуры). Вызов plt.show()
, прежде чем вы нарисовали что-либо, не имеет никакого смысла. Если вы хотите явно создать новый рисунок, используйте plt.figure()
.
... новая фигура отображается без ведома вызов plt.show().
Это не произойдет, если вы не бежите код в нечто похожее на режим pylab IPython, где MainLoop графического пользовательского интерфейса Backend будет выполняться в отдельном потоке ...
Вообще говоря, PLT. show() будет последней строкой вашего скрипта. (Или будет вызван всякий раз, когда вы хотите остановить и визуализировать сюжет, который вы сделали, во всяком случае.)
Надеюсь, это имеет смысл.
Что вы делаете, если хотите отобразить последовательность изображений, временно приостановив их, чтобы отобразить их на экране, а затем перейти к следующему изображению? Вам нужно будет вызвать show() в какой-то момент, но если вы это сделаете, вы не сможете выполнить оставшуюся часть кода, чтобы отобразить следующее изображение. – ely
Просто запустите новую фигуру plt.figure() или закройте предыдущий файл plt.close(). – j13r