2016-11-20 4 views
0

Mein Code verwendet:Syntax für drei Punkte Bewegung Plotten FuncAnimation

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 

def animate(i): 
    ax.set_data(ax.scatter(ptx1, pty1, ptz1, c='red'), 
     ax.scatter(ptx2, pty2, ptz2, c='blue'), 
     ax.scatter(ptx3, pty3, ptz3, c='green')) 

ani = FuncAnimation(fig, animate, frames=10, interval=200) 

plt.show() 

Ich versuche, die Bewegung von drei Punkten zu zeichnen. Jedes ptx/y/z/1/2/3 ist eine Liste von Floats, die die Koordinaten des Punktes angeben. Ich bin mir nicht sicher, wie ich FuncAnimation verwenden kann, um meine Punkte zu animieren. Jede Hilfe würde sehr geschätzt werden!

+0

Haben Sie einen Fehler, wenn Sie dies ausführen? – Inconnu

+0

'FuncAnimations' (mit' frames = 10') ruft 'animate' 10-mal auf. Jedes Mal, wenn es angerufen wird, müssen Sie Daten ändern. Auf diese Weise erhalten Sie Animation. "i" ist die aktuelle Bildnummer, damit Sie sie verwenden können, um andere Daten aus der Liste zu erhalten. – furas

+0

Also sollte ich versuchen, eine for-Schleife durch meine Listen innerhalb animieren? – Monica

Antwort

0

Einfaches Beispiel. animate wird oft aufgerufen und jedes Mal müssen Sie verschiedene Daten verwenden, um die Animation zu sehen.

import matplotlib.pyplot as plt 
from matplotlib.animation import FuncAnimation 
import random 

# create some random data  
ptx1 = [random.randint(0,100) for x in range(20)] 
pty1 = [random.randint(0,100) for x in range(20)] 

fig = plt.figure() 
ax = fig.add_subplot(111) 

def animate(i): 
    # use i-th elements from data 
    ax.scatter(ptx1[:i], pty1[:i], c='red') 

    # or add only one element from list 
    #ax.scatter(ptx1[i], pty1[i], c='red') 

ani = FuncAnimation(fig, animate, frames=20, interval=500) 

plt.show() 
+0

Vielen Dank @furas! Das war genau das, was ich brauchte. Ich habe das i-te Element nicht ausgewählt, also hat es nicht funktioniert – Monica