Laufendes Diagramm mit Matplotlib

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
Poseidonius
User
Beiträge: 63
Registriert: Montag 23. Januar 2006, 08:58

Hallo zusammen,

1. Bekommt man auch ohne gtk, qt usw. mit Matplotlib ein Diagramm hin, dass nacheinander Messwerte zu einem bestehenden Plot hinzufügt?

2. Zudem habe ich das Problem, dass wenn ich mit

Code: Alles auswählen

import matplotlib.pyplot as plt

plt.figure(1) 
plt.plot([1,2,3])
plt.show()
print "Fertig"
ein Fenster aufploppen lasse, sich dies in den Vordergrund "drängelt" und das Programm erst weiterläuft, spricht "fertig" ausgibt, wenn das Fenster vom Anwender wieder geschlossen wurde.

Würde mich über ein Stichwort oder einen Link sehr freuen.

Vielen Dank
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Poseidonius hat geschrieben: 1. Bekommt man auch ohne gtk, qt usw. mit Matplotlib ein Diagramm hin, dass nacheinander Messwerte zu einem bestehenden Plot hinzufügt?
Indem du in die gleiche Figur nochmal zeichnest. Wenn du praeziser wirst, kann man dir besser helfen.
Poseidonius hat geschrieben: 2. Zudem habe ich das Problem, dass wenn ich mit
ein Fenster aufploppen lasse, sich dies in den Vordergrund "drängelt" und das Programm erst weiterläuft, spricht "fertig" ausgibt, wenn das Fenster vom Anwender wieder geschlossen wurde.
Und was willst du stattdessen? Das ist genau das was ``show`` macht. Willst du eine Bilddatei plotten? Dazu gibt es ``savefig``.

Vllt hilft dir auch die Gallerie: http://matplotlib.sourceforge.net/gallery.html
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

cofi hat geschrieben:
Poseidonius hat geschrieben: 1. Bekommt man auch ohne gtk, qt usw. mit Matplotlib ein Diagramm hin, dass nacheinander Messwerte zu einem bestehenden Plot hinzufügt?
Indem du in die gleiche Figur nochmal zeichnest. Wenn du praeziser wirst, kann man dir besser helfen.
Das ist eine mögliche, doch sicher eine langsame Lösung. Eine Einführung gibt es auf der scipy-Seite. Details im Download von MPL (unter: matplotlib-0.9x.x/examples/animation).

Bzgl. show() möchte ich aber nichts hinzufügen.

HTH
Christian
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

Indem du einfach nochmal plot aufrufst bevor du das Fenster mit show anzeigst.
Wenn du mit der Shell arbeitest sucht du vlt. auch pylab.interactive(1). Damit wird das Fenster schon beim ersten plot aufgerufen. Du kannst es dann offen lassen und einen weiteren plot in das Diagram zeichen (mit plot).
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

eventuell ist auch Chaco aus der EPD was für dich, das kann das auf jeden Fall, zumindest gibts da sowas im Beispielordner.
Poseidonius
User
Beiträge: 63
Registriert: Montag 23. Januar 2006, 08:58

Hallo zusammen,

vielen Dank für die schnellen Hinweise!

ich lese Messdaten von einer Erfassungskarte ein und möchte diese "online" darstellen, sprich in einem Diagramm die jeweils neusten Daten hinzufügen.
Mit show() ging das eben nicht, weil das Fenster geschlossen werden musste, bevor das Skript weiter bearbeitet wurde. Wo ist mein Denkfehler?

Danke für den Tipp mit Chaco und Scipy, ich schaue mir die Sachen heute Nachmittag an! Wenn ich Wert auf Geschwindigkeit lege, nach welchen Stichworten sollte ich dann suchen?

Dank Euch und einen schönen Tag noch

Poseidonius
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Poseidonius hat geschrieben: Mit show() ging das eben nicht, weil das Fenster geschlossen werden musste, bevor das Skript weiter bearbeitet wurde. Wo ist mein Denkfehler?
Mit

Code: Alles auswählen

matplotlib.interactive(True)
läuft dein Code nach dem show() weiter (wie bereits erwähnt!)
Poseidonius
User
Beiträge: 63
Registriert: Montag 23. Januar 2006, 08:58

Der Hinweis auf die scipy Seite hat geholfen !

Danke für die Unterstützung
Antworten