Animation großer Datenmengen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
unterzwerg
User
Beiträge: 4
Registriert: Dienstag 15. April 2014, 09:38

Ich erstelle eine Animation mit FuncAnimation. In jedem neuen frame kommt eine neues Polygons hinzu. Die Polygone aus den vorherigen frames ändern sich nicht.
Da es uU lange dauert, ALLE Polygone neu zu zeichnen, möchte ich nur das jeweils das letzte neu zeichnen. Die Polygone aus den vorherigen fraems sollen aber zu sehen bleiben.
blit=True/False löst das Problem nicht, weil in der init-Function noch keine Polygone vorhanden sind.

Code: Alles auswählen

import matplotlib.patches as patches
from matplotlib import animation

import random

print random.randint(0,10)

def init():

    xlim(-10.,110.)
    ylim(-10.,110.)

    return tuple([])


def newFrame(i):
    obstacle = []
    for ip in range(i):
        obstacle.append(gca().add_patch(patches.Polygon(poly[ip], color="grey", edgecolor=None)))

    return tuple(obstacle)


# main program

poly = []
for i in range(1000):
    poly.append([ [random.randint(0, 100),random.randint(0, 100)],\
                  [random.randint(0,100),random.randint(0,100)], \
                  [random.randint(0,100),random.randint(0,100)] ])  
    
fig = figure(1)

ani = animation.FuncAnimation(fig, newFrame, init_func=init, blit=True)
show()

sys.exit
Zuletzt geändert von Anonymous am Mittwoch 11. Juni 2014, 13:55, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Probier das mal:

Code: Alles auswählen

obstacle = []
def newFrame(i):
    obstacle.append(gca().add_patch(patches.Polygon(poly[i], color="grey", edgecolor=None)))
    return obstacle
So wird gca().add_patch(patches.Polygon(poly, color="grey", edgecolor=None)) nur einmal in jeden Frame aufgerufen. Ob Matplotlib damit in der Animation erkennt, dass die meisten Objekte schon geplottet sind oder trotzdem alles neu plottet kann ich Dir aber nicht sagen.
a fool with a tool is still a fool, www.magben.de, YouTube
unterzwerg
User
Beiträge: 4
Registriert: Dienstag 15. April 2014, 09:38

Super, das funktioniert! Herzlichen Dank!
Antworten