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?
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).
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) .
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.
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.
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?
Tags und Links c c++ visualization data-visualization gnuplot