Последние несколько дней я играл с Numpy и matplotlib. У меня возникли проблемы с попыткой построить график функции matplotlib без блокировки выполнения. Я знаю, что на SO уже есть много тем, задающих похожие вопросы, и я довольно много гуглил, но мне не удалось заставить эту работу.
Я пробовал использовать show (block = False), как предлагают некоторые люди, но все, что я получил, - это замороженное окно. Если я просто вызываю show (), результат отображается правильно, но выполнение блокируется до закрытия окна. Судя по другим темам, которые я читал, я подозреваю, что работает ли show (block = False) или нет, зависит от серверной части. Это верно? Моя серверная часть - Qt4Agg. Не могли бы вы взглянуть на мой код и сказать, видите ли вы что-то не так? Вот мой код. Спасибо за любую помощь.
from math import *
from matplotlib import pyplot as plt
print plt.get_backend()
def main():
x = range(-50, 51, 1)
for pow in range(1,5): # plot x^1, x^2, ..., x^4
y = [Xi**pow for Xi in x]
print y
plt.plot(x, y)
plt.draw()
#plt.show() #this plots correctly, but blocks execution.
plt.show(block=False) #this creates an empty frozen window.
_ = raw_input("Press [enter] to continue.")
if __name__ == '__main__':
main()
PS. Я забыл сказать, что хотел бы обновлять существующее окно каждый раз, когда что-то рисую, вместо того, чтобы создавать новое.
matplotlib
.
plt.ion()
раньшеplt.show()
? Тогда он должен быть неблокирующим, поскольку каждый график порождается в дочернем потоке.