2016-07-26 25 views
4

Ich verwende matplotlib der FuncAnimation Funktion zum Zurücksetzen ein Segment eines großen Datensatzes zu animieren:Wie matplotlib Animation ohne erneute laufende Skript

fig = plt.figure(figsize=(15, 11.5)) 
ax = fig.add_subplot(111, aspect='equal', autoscale_on=False, 
        xlim=(x1,x2), ylim=(y1, y2)) 

data,=ax.plot([],[],'o') 

def init(): 
    data.set_data([],[]) 
    return data 


def animate(t): 
    global x_pos,y_pos 
    data.set_data(x_pos[t],y_pos[t]) 
    return data 

ani=animation.FuncAnimation(fig,animate,frames=duration,interval=20, 
          init_func=init,blit=True) 


plt.show() 

Wenn ich meinen Code von Grund laufen funktioniert dies sehr gut. Da das Laden und Vorverarbeiten eines großen Datasets jedoch einige Minuten in Anspruch nimmt, möchte ich in der Lage sein, nur einen Teil meines Codes zum Testen und Animieren auszuführen.

Wenn ich meine Animation schließe und versuche, sie erneut auszuführen, bleibt mir nur eine leere Zahl übrig - es werden keine Punkte gezeichnet und die animate() Funktion wird nie aufgerufen (ich habe dies mit einer print-Anweisung getestet).

Ich habe versucht, die Handlung Clearing und die Figur:

plt.clf() 
fig.close() 
plt.clear(figure) 

und eine andere Figur Zahl versucht, aber die Ergebnisse sind die gleichen.

Wie kann ich die Animation löschen, sodass ich sie erneut ausführen kann, ohne mein gesamtes Skript erneut auszuführen?

Antwort

1

Versuchen Sie folgendes:

ani.frame_seq = ani.new_frame_seq()