2 Stimmen

Schnelles und schmutziges Stripchart in Python?

Ich habe einige Python-Code, der eine Nachricht empfängt so oft mit einem Zeitstempel und eine Flanke Übergang, entweder niedrig-zu-hoch oder hoch-zu-low. Ich möchte jeden Übergang auf einem Streifendiagramm für eine schnelle und schmutzige Visualisierung der digitalen Wellenform mit der minimalen Menge an Aufwand zu grafisch darstellen.

Können Sie irgendwelche Methoden oder Pakete empfehlen, die dies vereinfachen?

Ich habe auch nichts dagegen, die Daten z. B. im csv-Format zu exportieren und sie in ein anderes Programm zu laden, wenn das einfacher ist.

編集する。

Ich habe CairoPlot ausprobiert:

>>> data = [(10, 0), (11, 1), (12.5, 0), (15, 1)]
>>> def fn(t):
...     for d in data:
...             if t > d[0]:
...                     return d[1]
...     return data[-1][1]
...
>>> CairoPlot.function_plot( 'tester.png', data, 500, 300, discrete = True, h_bounds=( data[0][0],data[-1][0]), step = 1 )

Dadurch war meine CPU mehr als 10 Minuten lang auf 100 % ausgelastet und verbrauchte ständig Speicher. Ich beendete es, bevor es alle Swap verwendet. Mache ich etwas falsch oder ist CairoPlot nur gebrochen?

Weitere Bearbeitung:

Ich habe jetzt etwas mehr praktikabel mit CairoPlot, basierend lose auf dem obigen Code. Allerdings ist es nicht perfekt wegen der Auflösung: Ich benötige möglicherweise eine Auflösung von bis zu zehn Nanosekunden (1e-8), um einige der kürzeren Pulse zu erfassen. Für ein mehrsekündiges Diagramm braucht man eine sehr lange Zeit mit dieser Methode.

0voto

Parand Punkte 96946

GnuPlot ist hier die altbewährte Antwort, einfache grafische Darstellung mit vielen Optionen. Ich glaube, es gibt Python-Anbindungen, aber es ist wahrscheinlich einfacher, Ihre Daten zu exportieren und sie durch reguläres Gnuplot laufen zu lassen. Hier ist ein altes Schnellstart-Dokument für sie.

Ich benutze auch matplotlib mit großem Erfolg für größere Datenmengen.

0voto

Dave Punkte 3650

Für eine Echtzeit-Stripchart-Anwendung, die nur tkinter verwendet (keine externen Pakete erforderlich), siehe Was ist das beste Echtzeit-Plot-Widget für wxPython? .

Wenn ich Ihre Frage richtig verstehe, empfangen Sie Nachrichten in Echtzeit mit Zeitstempeln in Nanosekunden-Auflösung, aber Sie erwarten nicht, dass Sie 10^9 Nachrichten pro Sekunde sehen. Wenn die durchschnittliche Nachrichtenrate niedrig ist (100 Nachrichten pro Sekunde oder weniger), würde ich den Zeitstempel einfach ignorieren und die Übergänge nacheinander aufzeichnen. Wenn die Zeitskala des Graphen 10ms pro Pixel beträgt, würden 4 Übergänge über 40ms gezeichnet werden, aber zumindest würden Sie nicht verpassen, dass etwas passiert ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X