Я грав у Numpy та matplotlib останні кілька днів. У мене виникають проблеми при спробі зробити графік matplotlib функцією без блокування виконання. Я знаю, що тут уже багато тем на ТАК, які задають подібні запитання, і я дуже гугл, але мені не вдалося зробити цю роботу.
Я спробував використовувати 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()
? Тоді це не може блокувати, оскільки кожен сюжет вкладається в дочірню нитку.