hacer - interfaz grafica en dev c++
¿Una forma fácil y gratuita de dibujar gráficos y tablas en C++? (4)
He utilizado este "plotter portátil". Es muy pequeño, multiplataforma, fácil de usar y se puede conectar a diferentes bibliotecas gráficas. pplot
(Solo para la parte de parcelas)
Si usa o planea usar Qt, otra solución multiplataforma es Qwt y Qchart
Estoy explorando un poco la simulación y quiero mostrar los gráficos para comparar el rendimiento entre los algoritmos durante el tiempo de ejecución.
¿Qué biblioteca te viene a la mente? Prefiero los que son pequeños, ya que me encantaría que mi instructor compile mi código fácilmente. He comprobado gdchart pero parece ser demasiado pesado. Solo quiero un tipo xy simple de gráfico de línea de tiempo.
Google chart está, por supuesto, fuera de la pregunta, en caso de que haya leído this pregunta similar.
Post relacionado Scatter Plots en C ++ .
Mi favorito siempre ha sido gnuplot . Es muy extenso, por lo que podría ser un poco demasiado complejo para tus necesidades. Es multiplataforma y hay una API de C ++ .
Sinceramente, estaba en el mismo barco que tú. Tengo una biblioteca de C ++ que quería conectar a una utilidad de gráficos. Terminé usando Boost Python y matplotlib . Fue el mejor que pude encontrar.
Como nota al margen: también desconfiaba de las licencias. matplotlib y las bibliotecas boost pueden integrarse en aplicaciones propietarias.
Aquí hay un ejemplo del código que usé:
#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();
}
}
ROOT de Cern produce algunas cosas bastante buenas, lo uso para mostrar mucho los datos de la red neuronal.