сюжет matplotlib и имшоу - PullRequest
       4

сюжет matplotlib и имшоу

12 голосов
/ 17 августа 2010

Поведение сюжета и 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 ().

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

1 Ответ

20 голосов
/ 17 августа 2010

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

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

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

... новая фигура отображается без Вызов plt.show ().

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

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

Надеюсь, в этом есть смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...