график matplotlib и imshow

Поведение графика и 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 ().

Кто-то может объяснить это?

12
задан user422100 16 August 2010 в 21:36
поделиться

1 ответ

Если я вызываю 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() будет последней строкой вашего сценария. (Или будет вызываться всякий раз, когда вы захотите остановиться и визуализировать созданный вами график, во всяком случае)

Надеюсь, это имеет некоторый смысл.

22
ответ дан 2 December 2019 в 07:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: