matplotlib schneller machen

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
kommando_pimperlepim
User
Beiträge: 23
Registriert: Dienstag 3. April 2007, 05:32

Mittwoch 4. April 2007, 08:42

Ich hätte da eine Frage zu matplotlib.

Ich beschäftige mich mit der grafischen Ausgabe von Diagrammen und Graphen über den plot-Befehl. Diese sind oft bewegt, d. h. durch eine for-Schleife ändere ich einen plot systematisch, sodass daraus ein bewegtes Bild entsteht. Leider benötigt ein solcher plot-Schritt recht viel Zeit.

Ich würde gerne wissen, ob es einen Weg gibt, die Geschwindigkeit einer Ausgabe zu erhöhen, damit ich die Anzahl der Animationsschritte erhöhen kann, ohne dass auch die Gesamtdauer steigt.
Lufia
User
Beiträge: 83
Registriert: Samstag 13. Mai 2006, 10:04
Wohnort: Berlin

Montag 25. Juni 2007, 15:07

Hallo kommando_pimperlepim

hast du schon ein Möglichketi gefunden Matlplotlib schneller zu machen?

Ich kann dir wohl leider auch nicht großartig weiterhelfen.

Ich muss sehr oft Sachen visualisieren. Meist sind es 3D bzw. 3D Daten daher muss ich andere Programme, tecplot, opendx... nutzen. Ab und zu nehme ich auch gnuplot oder Matplotlib. Wenn du sehr viele Daten hast kommen die Programme schnell an ihre Grenze, d.h. online sind die Sachen nicht mehr in Echtzeit darstellbar. Eine gute Möglichkeit ist es zu jedem Zeitschritt deiner Rechnung eine Ausgabe mit den berechneten/gemessenen Werten zu schreiben und diese später zu visualisiern bzw. Bilddateien daraus zu machen z.B. *.png erstellen. Die ganzen Bidldateien können dann im nächsten Schritt zu einem Film zusammenzufasst werden (mencoder, ffmpeg).

Evtl. bringt dir das etwas. Achso, gnuplot ist angeblich etwas schneller, ich habe es aber noch nie von Python aus benutzt.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Montag 25. Juni 2007, 16:13

Hoi,

der Autor von MPL, John Hunter, hat MPL u. a. geschrieben, um EEG-Daten visualisieren zu können. In den Beispielen (kann man runterladen), wird auch gezeigt, wie man MPL in verschiedene GUIs einbinden kann.

Aber ohne konkreten Code und eine Beschreibung der Daten ist sehr schwer zu sagen, woran es krankt, wenn das Programm zu langsam ist.

Gruß,
Christian

PS Ja, gnuplot ist dennoch in den meisten Fällen schneller. Einfach nach gnuplot.py googlen.
PPS Speichern in Datein nach jedem update eines Plots beschleunigt die Anzeige sicher nicht ;-)
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Montag 25. Juni 2007, 16:16

PPPS Ach, und dann gibt es noch: http://matplotlib.sourceforge.net/faq.html#SLOW
Lufia
User
Beiträge: 83
Registriert: Samstag 13. Mai 2006, 10:04
Wohnort: Berlin

Montag 25. Juni 2007, 18:46

@CM

ich glaube du hast mich falsch verstanden. Natürlich braucht das Abspeichern von Daten Zeit, aber manchmal ist es wohl anders nicht möglich.

Bsp. ein Kollege von mir macht eine Messung mit 24 Sensoren die kontinuierlich Daten liefern, aus diesen Daten müssen weitere Werte berechnet und dann visualisiert werden. Das geht mit Matplotlib unter der Benutzung von Subplots, etc. so sicher auch nicht in Echtzeit.

Ich bekomme von meinem Kollegen nur die Daten in einer Datei. Das auswerten und erstellen der Plots braucht etwa doppelt so lange wie in Echtzeit nötig wäre. Wobei ich das Problem habe das ich mit Matplolib noch nicht so gut umgehen kann und sich scheinbar der Arbeitsspeicher mit der Zeit auffüllt.

In solchen Fällen ist es eben eine Alternative die Daten abzuspeichern und später auszuwerten. Klar beschleunigt das die Anzeige nicht, aber es
ist in so einem Fall eine Alternative. Leider hat kommando_pimperlepim nicht genau gesagt was er machen möchte. Ich wollte ihm eine Möglichkeit
aufzeigen wie er seine Sachen evtl. wie gewünscht darstellen kann.

Sorry falls das jetzt etwa am Thema vorbei war, aber ich wollte das kurz richtig stellen.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Montag 25. Juni 2007, 20:09

Lufia hat geschrieben: ich glaube du hast mich falsch verstanden. Natürlich braucht das Abspeichern von Daten Zeit, aber manchmal ist es wohl anders nicht möglich.
Nö, hab' ich nicht. Es mag wohl sein, daß es nicht immer möglich ist Daten mit MPL online anzuzeigen, aber die Frage war die nach "bewegten" Plots - und da ist zwischenzeitliches Abspeichern sicher keine Alternative.
Lufia hat geschrieben: Bsp. ein Kollege von mir macht eine Messung mit 24 Sensoren die kontinuierlich Daten liefern, aus diesen Daten müssen weitere Werte berechnet und dann visualisiert werden. Das geht mit Matplotlib unter der Benutzung von Subplots, etc. so sicher auch nicht in Echtzeit.
Das kommt darauf an - so allgemein kann man dazu nicht kompetent Stellung nehmen.
Lufia hat geschrieben: Ich bekomme von meinem Kollegen nur die Daten in einer Datei. Das auswerten und erstellen der Plots braucht etwa doppelt so lange wie in Echtzeit nötig wäre. Wobei ich das Problem habe das ich mit Matplolib noch nicht so gut umgehen kann und sich scheinbar der Arbeitsspeicher mit der Zeit auffüllt.
Hast Du einen Memoryleak oder was meinst Du? Falls ja, gib' bitte ein Codebeispiel (in einem neuen Thread), denn das dürfte eigentlich nicht sein - aber welche Software ist schon perfekt.
Lufia hat geschrieben: In solchen Fällen ist es eben eine Alternative die Daten abzuspeichern und später auszuwerten.
Na ja, abspeichern kann ohnehin nicht schaden ... ;-)

Ist sowieso ein rel. alter Thread, den Du da ausgegraben hast. Im April wurde kommando_pimperlepims Frage wohl übersehen oder es wußte niemand zu antworten. Sollte er/sie die Frage aufrechterhalten, würde ich auch erst mal um weitere Infos bitten. Z. Zt. jedenfalls kann man die Frage eigentlich nicht sinnig beantworten.

Gruß,
Christian
Antworten