2012-11-26 8 views
18

Alla fine dell'ultima funzione che richiamo in uno dei miei programmi, ho il seguente codice per tracciare un semplice grafico a colori.plt.show() che fa il blocco del terminale

plt.figure() 
plt.pcolormesh(X,Y,Z) 
plt.colorbar() 
plt.show() 

Afterwords Torno al main e il mio programma è completo. La trama viene visualizzata come previsto, tuttavia quando vado a chiuderla usando il pulsante x nell'angolo (su ubuntu), il mio programma non finisce. Si blocca lì con un processo in esecuzione. Come posso correggere questo?

+0

Una soluzione rapida e sporca potrebbe essere quella di provare a utilizzare 'plt.draw()' invece di 'plt.show()'. 'show()' carica tutti gli strumenti interattivi, dove 'draw()' dovrebbe essere un semplice visualizzatore che può giocare più bene con il resto del programma. – jozzas

+0

Inoltre, quale versione di matplotlib stai usando? La versione 1.0.0 ha apportato alcune modifiche a 'show()' per renderlo più compatibile con ciò che si vuole fare. [Vedi i documenti] (http://matplotlib.org/faq/howto_faq.html#use-show) per maggiori informazioni. – jozzas

+2

Stai usando ipython o qualche altra console matplotlib che gestisce correttamente i thread della GUI? – DaveP

risposta

18

il tuo matplotlib potrebbe essere in esecuzione in non-interactive mode per qualche motivo. Io non sono sicuro di come impedire che nella configurazione locale, ma se si aggiunge o questo:

plt.ion() 

o questo:

matplotlib.interactive(True) 

da qualche parte all'inizio dello script, occorre modificare il comportamento delle tue trame.

1

per la modalità interattiva, avete bisogno di questo a capo di lima:

import matplotlib 
matplotlib.use("TkAgg") 
Problemi correlati