сюжет matplotlib и imshow

поведение сюжета matplotlib и imshow меня смущает.

import matplotlib as mpl
import matplotlib.pyplot as plt

Если я вызову plt.show () перед вызовом plt.imshow (i), затем возникает ошибка. Если я позвоню в plt.imshow (i) перед вызовом plt.show (), тогда все работает отлично. Однако, если я закрываю первую фигуру, которая открывается, а затем вызываю plt.imshow (i), новая фигура отображается без вызова plt.шоу.)(

может кто-нибудь объяснить это?

1 ответов


если я позвоню plt.show () перед вызовом plt.imshow (i), затем возникает ошибка. Если я позвоню в plt.imshow (i) до вызываю plt.показать(), то все работать отлично.

plt.show() отображает рисунок (и входит в mainloop любого бэкэнда gui, который вы используете). Вы не должны называть это, пока вы не построили планы и не хотите, чтобы они отображались.

plt.imshow() рисует изображение на текущей фигуре (создание фигуры - это не текущая цифра). Зову plt.show() прежде чем вы нарисуете что-нибудь, не имеет никакого смысла. Если вы хотите явно создать новую фигуру, используйте plt.figure().

...новый рисунок отображается не вызываю plt.шоу.)(

этого не произойдет, если вы не используете код в чем-то похожем на режим pylab ipython, где mainloop бэкэнда gui будет запущен в отдельном потоке...

вообще говоря, plt.show() будет последняя строка твоего сценария. (Или будет вызван, когда вы захотите остановиться и визуализировать сюжет, который вы сделали, во всяком случае.)

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