Gibt es eine sofort einsatzbereite 2D / 3D-Plotbibliothek für C ++? [geschlossen]


73

Ich habe mir die verschiedenen Optionen zum Zeichnen von Funktionen (oder anderen Arten von Diagrammen) in einem interaktiven Fenster angesehen. Ich benutze meistens wxWidgets, bin aber offen für andere "Schnittstellen".

Wenn ich mir anschaue, was verfügbar ist, habe ich Folgendes gefunden :

wxPlot : Seit 2006 nicht mehr aktualisiert. Aber es wäre ein guter Kandidat, wenn es ...

wxMathPlot : Sehr neu, nicht ausgereift, wenige Funktionen (noch aktiv?)

libgraph : Veraltet, nicht Rebust, nur 2D und gibt nur Bilder aus.

koolplot : Zu einfach , keine Kontrolle über das erstellte Fenster.

EasyBMP : Sehr einfach , nur Bilder werden ausgegeben.

plotutils : Nur Befehlszeile.

plplot : C und C ++ API werden kaum gepflegt. Darauf basiert wxPlot. Könnte auch ein Kandidat sein, wenn die C- und C ++ - Schnittstelle aktualisiert wird.

Irgendwelche Kommentare? Ideen?

Vielen Dank!

Antworten:




9

Ich bin ganz auf ROOT für diese Bedürfnisse. Ziemlich schwer, wenn Sie nicht die gesamte Analyseunterstützung benötigen.


Ich weiß, dass dies ein alter Kommentar ist, aber ich danke Ihnen, dass Sie auf ROOT hingewiesen haben. Ich hatte noch nichts davon gehört und es wird sehr nützlich sein!
Alex Hirzel

Ich hasse es wirklich, gute Bibliotheken unter GNU zu sehen, das macht es buchstäblich nutzlos.
Metablaster

9

Sie haben Qwt, das ausgereift ist. Irgendwo lauert eine 3D-Version. Mit dem ästhetischen Ergebnis war ich jedoch nie zufrieden.

Es kann sich lohnen, darauf zu warten, dass Qt3D herauskommt, um selbst leicht etwas Besseres zu schreiben.


6

Ich versorge die ausführbare Datei von GNUPlot programmgesteuert mit den erforderlichen Eingabedateien und rufe sie mithilfe der system()Funktion auf. Es passt zu meiner Situation, da ich meine Daten nur während der Recherche visualisieren möchte. Aber wenn Sie möchten, dass die Plotfunktion in Ihre ausführbare Datei integriert wird, ist dies möglicherweise nichts für Sie :)


4
Schauen Sie sich Gnuplot iostream an: Eine einzelne Header-Bibliothek, die einen intuitiven Zugriff auf die Gnuplot-Funktionen direkt von Ihrem C ++ - Code aus ermöglicht. Ich liebe es!
DarioP


3

Könnte wxChart eine Option sein? Ich habe es jedoch nicht selbst verwendet und es sieht so aus, als ob es eine Weile nicht aktualisiert wurde.


3

Nur eine Idee: Verwenden Sie Python als einbettbare Skriptsprache, um Ihre Diagramme zu zeichnen. Python verfügt über eine Vielzahl von Plotbibliotheken .


Wenn es Ihnen nichts ausmacht, einen Python-Interpreter einzubetten, bietet die Verwendung einer Skriptsprache in Ihrer Anwendung eine Reihe weiterer Vorteile sowie den Zugriff auf die Art von Bibliotheken, mit denen Sie verknüpft sind. +1
ConcernedOfTunbridgeWells

Was ist bequemer und schneller , als Daten in Dateien zu schreiben und Systemaufrufe zum Ausführen von Py-Skripten zu verwenden ?
Zhangxaochen

@zhangxaochen es kommt darauf an was du tust.
JFS

1

Ich fand die Spielbibliothek Allegro damals einfach zu bedienen. Könnte einen Blick wert sein.



1

AntiGrain Geometry (AGG). http://www.antigrain.com/ . Es ist eine OpenSource-2D-Vektorgrafikbibliothek. Es ist eine eigenständige Bibliothek ohne zusätzliche Abhängigkeiten. Hat eine gute Dokumentation. Die Python-Plotbibliothek matplotlib verwendet AGG als eines der Backends.


2
AGG ist eine Rendering-Engine, keine Plot-Bibliothek. Die Verwendung zum Plotten würde eine erneute Implementierung von matplotlib erfordern.
Thelema

1

Werfen Sie einen Blick auf wxArt2d es ein komplettes Framework für die 2D - Bearbeitung und Plotten ist. Weitere Beispiele finden Sie in den Screenshots .

Einige interessante Funktionen:

  • Lesen und Schreiben von SVG und CVG
  • Mehrere Ansichten desselben Dokuments
  • Änderungen werden im Leerlauf aktualisiert
  • Optimiertes Zeichnen von 2D-Objekten

1

Hallo! Ich bin der Entwickler von wxMathPlot ! Das Projekt ist aktiv: Ich habe nur lange gebraucht, um eine neue Version zu erhalten, da der Code teilweise neu geschrieben werden musste, um neue Funktionen einzuführen. Schauen Sie sich die neue Version 0.1.0 an: Sie ist eine große Verbesserung gegenüber alten Versionen. Auf jeden Fall bietet es kein 3D (auch wenn ich immer darüber nachdenke ...).


2
Kann es in "Echtzeit" zeichnen? (oder fast in Echtzeit)? Um es klar auszudrücken: Ich möchte in der Lage sein, aus einer Datenquelle zu aktualisieren und zu zeichnen, sobald neue Punkte eintreffen.
Tim

-3

OpenGL. Es wird jedoch schwierig sein und möglicherweise das Rad neu schreiben. Beachten Sie, dass OpenGL eine allgemeine 3D-Bibliothek und keine bestimmte Plotbibliothek ist. Sie können jedoch das darauf basierende Plotten implementieren.


7
Abgestimmt, weil ich nicht denke, dass die Empfehlung, eine eigene Frage zu einer Bibliotheksempfehlung zu stellen, diese nicht wirklich beantwortet.
Antipattern
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.