Поведение графика и imshow matplotlib сбивает с толку меня.
import matplotlib as mpl
import matplotlib.pyplot as plt
Если я называю plt.show () до вызова plt.imshow (i), то ошибка заканчивается. Если я называю plt.imshow (i) до вызова plt.show (), то все работает отлично. Однако, если я закрываю первое число, которое открыто, и затем назовите plt.imshow (i), новое число отображено, никогда не звоня plt.show ().
Кто-то может объяснить это?
Если я вызываю plt.show() до вызова plt.imshow(i), то возникнет ошибка. Если я вызываю plt.imshow(i) до того, как до вызова plt.show(), то все работает отлично.
plt.show()
отображает рисунок (и входит в mainloop любого используемого вами бэкенда gui). Не стоит вызывать эту функцию, пока вы не построите график и не захотите увидеть его на экране.
plt.imshow()
рисует изображение на текущей фигуре (создает фигуру, если текущей фигуры нет). Вызов plt.show()
до того, как вы что-то нарисовали, не имеет никакого смысла. Если вы хотите явно создать новую фигуру, используйте plt.figure()
.
... новая фигура отображается без вызова plt.show().
Этого не произойдет, если только вы не выполняете код в режиме, подобном режиму pylab в ipython, где основной цикл бэкенда gui будет выполняться в отдельном потоке...
Вообще говоря, plt.show() будет последней строкой вашего сценария. (Или будет вызываться всякий раз, когда вы захотите остановиться и визуализировать созданный вами график, во всяком случае)
Надеюсь, это имеет некоторый смысл.