Visualisierung von C / C ++ über die Gnuplot-Pipe-Schnittstelle

9

Ich versuche, die Pipe-Schnittstelle zu Gnuplot zu verwenden (ein Standard-gnuplot_i. {cpp, hpp}), um eine Echtzeitanzeige von Werten zu erzeugen, die sich innerhalb eines anderen in C ++ geschriebenen Programms ständig ändern. Das funktioniert gut, aber ich wollte sehen, ob jemand Verbesserungsvorschläge hat.

Diese Implementierung enthält eine bequeme Methode, um einen einzelnen Vektor und zwei Vektoren als 2D-Diagramm darzustellen. Dies wurde erreicht, indem über einen Standardbibliotheksaufruf in die mktemp-Funktion in eine temporäre Datei geschrieben und diese dann als Eingabe für einen gnuplot-Plotaufruf verwendet wurde. Dies erzeugte zu viele temporäre Dateien und schien nicht gut zu funktionieren, wenn die Aktualisierungsrate auf dem Diagramm hoch ist (möglicherweise zu einem Zeitpunkt auf IO beschränkt). Ich habe mich entschieden, die '-' Pseudodatei im Plot-Aufruf zu verwenden und die Vektoren einfach direkt an die Pipe zu senden (beendet mit einer einzelnen Zeile mit "e" darauf). Das funktioniert besser, ist aber immer noch nicht großartig.

Gibt es einen slicker Weg, um das zu tun, was ich versuche zu tun, als das Plot ständig neu zu generieren, wenn sich die Werte geändert haben? Wie oft ist es sicher , die Handlung mit neuen Informationen zu aktualisieren? Oder vielleicht gibt es einen viel einfacheren Weg, um zu erreichen, was ich versuche zu tun?

@ Andy Ross

Ich habe keine "Anforderungen" an sich. Was ich mit Slick meinte, war, dass es vielleicht einen eleganteren Ansatz gab, das zu tun, was ich versuchte, als ich noch Gnuplot benutzte. Obwohl elegant ist subjektiv, finde ich den Ansatz, den ich derzeit besonders unelegant nehme. Was ich mit Sicherheit meinte, war, ob jemand wusste, mit welcher Aktualisierungsrate IO-Probleme (z. B. Latenz, Lock-up der Anzeige usw.) bei diesem Ansatz auftreten würden.

Ich möchte die Verwendung eines Toolkits aus folgenden Gründen vermeiden (zumindest meine kurze Liste).

  • Ich habe festgestellt, dass es im Allgemeinen nicht sinnvoll ist, sie auf verschiedenen Architekturen zu installieren, insbesondere nicht als Root (und wenn Abhängigkeiten erforderlich sind, die in den Betriebssystemen nicht standardmäßig sind).
  • Sie verursachen eine zusätzliche Kompilierungsabhängigkeit für andere Personen, die diese Software verwenden.
  • Es scheint keinen wirklichen Standard zu geben, den die meisten Leute für diesen Zweck verwenden afiak (ich selbst sowie die meisten Leute, mit denen ich arbeite, speichere nur Logfile-Dateien ab und mache eine Post-Analyse) in MATLAB).
  • Ich kenne Gnuplotsyntax. Ich kenne die Syntax von SuperPlottingApiXX nicht.
  • Der Funktionsumfang von gnuplot ist fast ideal für die Dinge, die ich mit dieser Software machen möchte.

Wenn Sie jedoch besondere Vorschläge in Bezug auf C / C ++ - Plotting-Bibliotheken haben, die angesichts der obigen Liste gut passen, bin ich immer an Vorschlägen interessiert (Warnung: Ich habe mich schon ein wenig umgesehen, um sie zu finden) .

    
bpw1621 01.02.2010, 22:17
quelle

3 Antworten

3

gnuplot-cpp ist eine objektorientierte C ++ - Wrapper-Oberfläche um eine POSIX-Pipe-Verbindung mit Gnuplot.

Die Beispieldatei wird sofort kompiliert und der Schnittstellencode sieht anständig aus; Ich werde es in meinem aktuellen Projekt versuchen.

    
Richard 13.01.2013 16:12
quelle
2

Es gibt eine C2gnuplot Bibliothek, die ich vor einigen Jahren geschrieben habe. Es ist sehr einfach, aber kann Ihnen einige Tipps geben. Im Grunde verwendet es FIFO-Dateien, um Daten in Gnuplot zu übergeben. Es ist in der Lage, Animation von den Plots zu erzeugen. Hier ist ein Video, das mit der App erstellt wurde. Ich hoffe, dass dies für Sie nützlich sein wird.

    
zoli2k 03.02.2010 14:21
quelle
0

Slicker? Sicher? Können Sie genauer auf Ihre Anforderungen eingehen?

Es klingt, als ob Sie versuchen, eine animierte Visualisierung mit einem Werkzeug zu erstellen, das statische Bilder erzeugt. Wenn Ihre Anzeige so einfach ist, wie Sie sagen, warum nicht eine schnelle GUI-App schreiben (mit dem Toolkit Ihrer Wahl), um stattdessen die Zeichnung zu machen?

    
Andy Ross 02.02.2010 05:04
quelle