Ich habe eine Reihe von Sensoren an meinem Raspberry Pi angeschlossen; Ich sende ihre Daten zweimal pro Sekunde mit TCP an meinen PC. Ich möchte diese Werte kontinuierlich mit matplotlib grafisch darstellen.
Die Methode, die ich gerade benutze, scheint ineffizient zu sein (ich lösche das Subplot und zeichne es jedes Mal neu) und hat einige unerwünschte Nachteile (die Skala wird jedes Mal neu eingestellt; ich möchte, dass sie von 0,0 - 5,0 bleibt). Ich weiß, dass es einen Weg gibt, dies zu tun, ohne dass man es abräumen und neu zeichnen muss, aber ich kann es nicht herausfinden. Das Folgende ist mein aktueller Code:
%Vor% Sie könnten animation.FuncAnimation
verwenden.
Zeichnen Sie das Balkendiagramm einmal und speichern Sie den Rückgabewert, der eine Sammlung von Rect: ist:
Um die Höhe eines Balkens zu ändern, rufen Sie rect.set_height
:
Wenn matplotlib keine erzwungene Option ist, würde ich ein auf dem Web-Socket basierendes Push-System auf dem Server und ein Javascript-basiertes Plotten für die Client-Seite empfehlen. Ich werde zuerst einige Vorteile aufzählen:
Da ich mit meinem Raspberry Pi etwas sehr ähnliches mache, kann ich meine Details teilen. Es wurde von diesem Blogpost inspiriert.
Der Code für die Serverseite, der die Daten pusht, findet sich hier . Sie können wahrscheinlich sehen, dass es nach der Installation der Abhängigkeiten Ihrem Code sehr ähnlich ist und Sie schließlich socket.send()
sogar in meinem Code finden würden.
Für den Kunden ist dies der Link zu die HTML-Datei und das ist die JS, die bekommt ausgeführt auf dem Browser, der Flot Plotting-Bibliothek verwendet. Ich bin sicher, dass das Demo auf ihrer Homepage großartig genug ist, um bemerkt zu werden!
Tags und Links python matplotlib