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!

user38290
quelle

Antworten:

24

Obwohl dieser Faden alt ist, aber Gold. QCustomPlot ist ebenfalls sehr zu empfehlen, um diese Liste zu ergänzen.

TheMindWithin
quelle
15

MathGL verfügt über viele Diagrammtypen, eine C / Fortran-Schnittstelle und eine grundlegende Datenanalyse

Abalakin
quelle
9

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

dmckee --- Ex-Moderator Kätzchen
quelle
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.

Alexandre C.
quelle
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 :)

Gant
quelle
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
4

Sie können DISLIN verwenden

es ist ganz ordentlich!

KansaiRobot
quelle
Sie erfordern die Zahlung für die Bibliothek.
Metablaster
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.

SteveL
quelle
3

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

jfs
quelle
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.

Kev
quelle
1

Wir verwenden eine alte Version von ComponentOne Chart .

John Dibling
quelle
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.


quelle
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
Seika
quelle
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 ...).


quelle
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.

luiscubal
quelle
7
Abgestimmt, weil ich nicht denke, dass die Empfehlung, eine eigene Frage zu einer Bibliotheksempfehlung zu stellen, diese nicht wirklich beantwortet.
Antipattern