Tool zum plotten von Graphen/Diagrammen aus C heraus
-
Moinsen,
ich frage mich ob es ein Tool gibt, welches ich möglichst simpel direkt aus C heraus aufrufen kann, um mir Daten zu visualisieren.
Hintergrund: Ich teste Algorithmen oft auf ihren gesamten Wertebereich ab, um deren Funktionalität gut abprüfen zu können. Bisher mache ich das (mehr oder weniger) umständlich, indem ich via fprintf() formatierte Daten im CSV Format abspeichere, um die Visualisierung dann in Excel vorzunehmen. Dies ist möglich aber wenig komfortabel.
Was ich will: Ein Tool welches mir elaubt, direkt im C-Code das Zeichnen eines Diagramms zu starten, ohne den Umweg über Dateien zu gehen.
Perfekt wäre es, wenn ich auch die Testdaten über eine GUI anlegen könnte.Zur Veranschaulichung folgender Pseudo-Code:
// Der Prototyp meines zu testenden algorithmus: int foo(int); // später im Code: // Länge des Testdatenarrays unsigned len; // hier werden Eingangsdaten hingeschrieben int in_data[len]; // hier werden Ausgangsdaten hingeschrieben int out_data[len]; // hier wird das gesuchte Tool aufgerufen um Testeingangsdaten abzufragen gui_get_1D_data_from_user( in_data, len); // hier wird der Algorithmus nun mit den Testdaten gefüttert for( int i = 0; i < len; ++i){ out_data[i] = foo(in_data[i]); } // hier wird das gesuchte Tool aufgerufen um Ausgangsdaten zu potten gui_plot_1D_data( out_data, len);Je mehr Freiheiten die Generierung/Visualisierung bietet, umso besser.
Das Tool sollte frei/kostenlos sein.
Ich hoffe die Frage ist verständlich und danke für Hinweise.
-
Gnuplot
-
vielleicht auch VTK? (www.vtk.org)
das kann so viel, das kann das bestimmt auch.
-
Wenns um Graphen geht, boost::graph kann in das .dot Format von Graphviz konvertieren.
-
GNUplot dachte ich auch zuerst. Aber das C Interface gibts da nur als Addon, und das wohl auch nur mit Cygwin.
boost ist ja leider C++.
VTK sieht ziemlich geil aus. Aber ich konnte da bisher auch nur was über ein C++ Interface lesen. Muss ich mir nochmal genauer anschauen.
Danke für die Vorschläge.
-
phlox81 schrieb:
Wenns um Graphen geht, boost::graph kann in das .dot Format von Graphviz konvertieren.
Das ist aber ne andere Sorte Graph.

-
Oh, ja sorry hab das mit C überlesen, ich glaub da gibts nur C++-interfaces. Is alles so abstrahiert, da wird sich sicher keiner ransetzen und das nach C binden

-
Tim schrieb:
GNUplot dachte ich auch zuerst. Aber das C Interface gibts da nur als Addon, und das wohl auch nur mit Cygwin.
Du brauchst doch kein C-Interface für Gnuplot. Du machst eine Pipe auf und gibst ihm die Befehle direkt.
boost ist ja leider C++.
extra boost::graph einzusetzen, um dot-files zu schreiben, ist ziemlich übertrieben. Das dot-Format ist so simpel, das schafft man auch so. Aber da du gar keine Graphen visualisieren willst, fällt das sowieso weg.
-
Bei Google habe ich folgendes noch gefunden http://www.fred.net/brv/chart/ Ansonsten wie gesagt einfach in gnuplot pipen. Oder du könntest ein CSV generieren und zB mittels Ruby und Gruff dir Graphen zeichnen lassen.