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

In einem IPython-Notebook werden zuerst die drei Info-Nachrichten ausgedruckt und anschließend die drei Zahlen dargestellt.Wie blotten Plots in IPython Notebook sequenziell?

Welcher Befehl kann verwendet werden, um die sequenzielle Anzeige von Ausdrucken und Plots zu erzwingen? Das heißt, "Info 0" drucken, "Abbildung 0" plotten, "Info 1" drucken, "Abbildung 1" plotten, etc.

Dies ist ein einfaches, bloßes Beispiel. In meinem Fall ist es viel komplizierter und es ist wichtig, das Verhalten richtig zu verstehen.

Antwort

4

einfach plt.show() an der gewünschten Stelle hinzuzufügen.

%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

Dies funktionierte perfekt. – user37544

0

IPython wertet zuerst den gesamten Code in Ihrer Zelle aus. Wenn dies geschehen ist, werden offene Zahlen auf den Ausgabebereich aufgetragen.

Wenn Sie das nicht möchten, können Sie Ihre Figuren manuell anzeigen lassen. Sie müssen jedoch sicherstellen, dass alle neu erstellten Figurenobjekte vor der Auswertung der Zelle geschlossen werden.

Dies ist ein kurzes Beispiel:

%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()