Ho giocato con Numpy e matplotlib negli ultimi giorni. Sto riscontrando problemi nel tentativo di rendere una trama matplotlib una funzione senza bloccare l'esecuzione. So che ci sono già molti thread qui su SO che fanno domande simili, e ho cercato su Google abbastanza ma non sono riuscito a farlo funzionare.
Ho provato a usare show (block = False) come alcuni suggeriscono, ma tutto quello che ottengo è una finestra congelata. Se chiamo semplicemente show (), il risultato viene tracciato correttamente ma l'esecuzione viene bloccata fino alla chiusura della finestra. Dagli altri thread che ho letto, ho il sospetto che se show (block = False) funzioni o meno dipende dal backend. È corretto? Il mio back-end è Qt4Agg. Potresti dare un'occhiata al mio codice e dirmi se vedi qualcosa di sbagliato? Ecco il mio codice Grazie per qualsiasi aiuto.
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. Ho dimenticato di dire che vorrei aggiornare la finestra esistente ogni volta che tracciamo qualcosa, invece di crearne una nuova.
matplotlib
.
plt.ion()
primaplt.show()
? Dovrebbe quindi essere non bloccante poiché ogni trama viene generata in un thread figlio.