2015-12-04 9 views
5
for i in range(3): 
    print("Info ",i) 
    plt.figure() 
    plt.plot(np.arange(10)*(i+1)) 

In un notebook IPython, questo stamperà prima i tre messaggi di informazione e quindi traccerà le tre cifre.Come svuotare sequenzialmente i grafici in IPython Notebook?

Quale comando è possibile utilizzare per applicare la visualizzazione sequenziale di stampe e grafici? Cioè, stampa "Info 0", traccia "Figura 0", stampa "Info 1", trama "Figura 1", ecc.

Questo è un semplice esempio di nudo. Nel mio caso è molto più complicato, ed è importante ottenere il comportamento correttamente.

risposta

4

Basta aggiungere plt.show() nella posizione desiderata.

%matplotlib inline 
import matplotlib.pyplot as plt 
import numpy as np 

for i in range(3): 
    print "Info ",i 
    plt.plot(np.arange(10)*(i+1)) 
    plt.show() 
+0

Questo ha funzionato perfettamente. – user37544

0

IPython prima valuta tutto il codice nella cella. Al termine, le figure aperte vengono tracciate nell'area di uscita.

Se ciò non è ciò che si desidera, è possibile visualizzare le figure manualmente. Tuttavia devi essere sicuro di chiudere tutti gli oggetti figure appena creati prima che la valutazione della cella termini.

Questo è un breve esempio:

%matplotlib inline 
import matplotlib.pyplot as plt 
import numpy as np 
from IPython.display import display 

for i in range(3): 
    print("Info ",i) 
    fig, ax = plt.subplots() 
    ax.plot(np.arange(10)*(i+1)) 
    display(fig) 
    plt.close() 
Problemi correlati