Je fais un peu de simulation d'exploration et je veux montrer les graphiques pour comparer les performances parmi les algorithmes pendant l'exécution.
Quelle bibliothèque vous vient à l'esprit? Je préfère fortement ceux qui sont petits comme j'adorerais s'il est facile pour mon instructeur de compiler mon code. J'ai vérifié gdchart mais cela semble trop lourd. Je veux juste une sorte de graphique chronologique simple x-y.
Le graphique Google est bien sûr hors de question, au cas où vous auriez lu this question similaire.
Article connexe Scatter Plots in C++ .
Mon préféré a toujours été gnuplot . Il est très étendu, donc il pourrait être un peu trop complexe pour vos besoins. Il est multiplateforme et il y a ne API C++ .
Honnêtement, j'étais dans le même bateau que vous. J'ai une bibliothèque C++ que je voulais connecter à un utilitaire graphique. J'ai fini par utiliser Boost Python et matplotlib . C'était le meilleur que j'ai pu trouver.
En remarque: je me méfiais également des licences. matplotlib et les bibliothèques boost peuvent être intégrés dans des applications propriétaires.
Voici un exemple du code que j'ai utilisé:
#include <boost/python.hpp>
#include <pygtk/pygtk.h>
#include <gtkmm.h>
using namespace boost::python;
using namespace std;
// This is called in the idle loop.
bool update(object *axes, object *canvas) {
static object random_integers = object(handle<>(PyImport_ImportModule("numpy.random"))).attr("random_integers");
axes->attr("scatter")(random_integers(0,1000,1000), random_integers(0,1000,1000));
axes->attr("set_xlim")(0,1000);
axes->attr("set_ylim")(0,1000);
canvas->attr("draw")();
return true;
}
int main() {
try {
// Python startup code
Py_Initialize();
PyRun_SimpleString("import signal");
PyRun_SimpleString("signal.signal(signal.SIGINT, signal.SIG_DFL)");
// Normal Gtk startup code
Gtk::Main kit(0,0);
// Get the python Figure and FigureCanvas types.
object Figure = object(handle<>(PyImport_ImportModule("matplotlib.figure"))).attr("Figure");
object FigureCanvas = object(handle<>(PyImport_ImportModule("matplotlib.backends.backend_gtkagg"))).attr("FigureCanvasGTKAgg");
// Instantiate a canvas
object figure = Figure();
object canvas = FigureCanvas(figure);
object axes = figure.attr("add_subplot")(111);
axes.attr("hold")(false);
// Create our window.
Gtk::Window window;
window.set_title("Engineering Sample");
window.set_default_size(1000, 600);
// Grab the Gtk::DrawingArea from the canvas.
Gtk::DrawingArea *plot = Glib::wrap(GTK_DRAWING_AREA(pygobject_get(canvas.ptr())));
// Add the plot to the window.
window.add(*plot);
window.show_all();
// On the idle loop, we'll call update(axes, canvas).
Glib::signal_idle().connect(sigc::bind(&update, &axes, &canvas));
// And start the Gtk event loop.
Gtk::Main::run(window);
} catch( error_already_set ) {
PyErr_Print();
}
}
Cern's [[# #]] root [~ # ~] produit des trucs assez sympas, je l'utilise pour afficher beaucoup de données de Neural Network.