matplotlib in echtzeit

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
Pretender2k
User
Beiträge: 27
Registriert: Freitag 23. Januar 2009, 18:23

tach zusammen,

ich moechte gerne matplotlib in echtzeit benutzen. Mit "echtzeit" meine ich, dass ich jede sec. einen Wert aus einer txt file lese und diesen gerne in einen Grafen plotten moechte. Die Y-Achse des Grafens sollte fest sein und die X- Achse immer die letzten 20 sec anzeigen. Die Geschwindigkeit sollte eigentlich kein Problem sein.

Ich hab folgenden Code geschrieben:

Code: Alles auswählen

from matplotlib.pyplot import figure, plot, show, close, draw, axis
from time import sleep

t = 0
a = 0
figure(1)
show()
while (1):
	t = t+1
	filename = "test.txt"
	txtfile = open(filename, "r")
	CO2 = float(txtfile.read())
	print CO2
	
	
	plot(t,CO2,"ro")
	if (t>5):
		a = a+1
	axis([0+a,20+a,300,500])
	
	draw()
	sleep(1)	


Das Problem ist jetzt, dass wenn ich irgendwas ueber das figure fenster schiebe, dieses nichtmehr richtig angezeigt wird. Ich glaub ich mach das acuh net so wirklich richtig. Vorschlaege was man besser machen sollte?

Danke
Pretender2k
User
Beiträge: 27
Registriert: Freitag 23. Januar 2009, 18:23

keiner ne idee? bzw. schonmal gemacht?
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Könnte mir vorstellen, dass das recht ineffizient ist was du da machst. Afaik fügt plot immer ein neues Linien-Objekt zum Bild hinzu bei deiner Endlosschleife werden das irgendwann recht viele. Also entweder das Bild vorher komplett löschen besser den neuen Datenpunkt manuell hinzufügen und redraw anstoßen. Bei der Gelegenheit würde ich mir auch gleich Gedanken machen die alten Datenpunkte irgendwann zu löschen, damit das nicht zu viele werden.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Schau mal hier: http://www.scipy.org/Cookbook/Matplotlib/Animations

BTW: Textdateien öffnet man mit `with` oder `try..finally`!
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
Antworten