C++ 用C+绘制图形和图表的简易方法+;?

C++ 用C+绘制图形和图表的简易方法+;?,c++,charts,C++,Charts,我正在做一些探索性的模拟,我想展示一些图表来比较运行时算法之间的性能 你想到了什么图书馆?如果我的指导老师能够轻松地编译我的代码,我非常喜欢那些小的。我检查过了,但似乎太重了。我只想要一个简单的x-y时间线图 谷歌图表当然是不可能的,以防你们读过类似的问题 相关帖子。我用过这个“便携式绘图仪”。它非常小,多平台,易于使用,您可以将其插入到不同的图形库中 (仅适用于绘图部分) 如果您使用或计划使用Qt,另一个多平台解决方案是和老实说,我和您在同一条船上。我有一个C++库,我想连接到绘图工具。我最

我正在做一些探索性的模拟,我想展示一些图表来比较运行时算法之间的性能

你想到了什么图书馆?如果我的指导老师能够轻松地编译我的代码,我非常喜欢那些小的。我检查过了,但似乎太重了。我只想要一个简单的x-y时间线图

谷歌图表当然是不可能的,以防你们读过类似的问题


相关帖子。

我用过这个“便携式绘图仪”。它非常小,多平台,易于使用,您可以将其插入到不同的图形库中

(仅适用于绘图部分)


如果您使用或计划使用Qt,另一个多平台解决方案是和

老实说,我和您在同一条船上。我有一个C++库,我想连接到绘图工具。我最终使用了和。这是我能找到的最好的

作为旁注:我也对许可证持谨慎态度。matplotlib和boost库可以集成到专有应用程序中

下面是我使用的代码示例:

#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();
    }
}
#包括
#包括
#包括
使用名称空间boost::python;
使用名称空间std;
//这在空闲循环中调用。
布尔更新(对象*轴,对象*画布){
静态对象随机整数=对象(句柄(PyImport\u ImportModule(“numpy.random”)).attr(“随机整数”);
轴->属性(“散布”)(随机整数(010001000),随机整数(010001000));
轴->属性(“设置对象”)(01000);
轴->属性(“设置项”)(01000);
画布->属性(“绘制”)();
返回true;
}
int main(){
试一试{
//Python启动代码
Py_初始化();
PyRun_SimpleString(“输入信号”);
PyRun_SimpleString(“signal.signal(signal.SIGINT,signal.SIG_-DFL)”;
//正常Gtk启动代码
Gtk::主套件(0,0);
//获取python Figure和FigureCanvas类型。
对象图形=对象(句柄(PyImport_ImportModule(“matplotlib.Figure”)).attr(“图形”);
object FigureCanvas=object(句柄(PyImport_ImportModule(“matplotlib.backends.backend_gtkagg”)).attr(“FigureCanvasGTKAgg”);
//实例化画布
对象图=图();
对象画布=FigureCanvas(图);
对象轴=figure.attr(“添加子图”)(111);
axes.attr(“持有”)(假);
//创建我们的窗口。
Gtk::窗口窗口;
窗口。设置标题(“工程样本”);
设置默认大小(1000600);
//从画布上抓取Gtk::DrawingArea。
Gtk::DrawingArea*plot=Glib::wrap(Gtk_DRAWING_AREA(pygobject_-get(canvas.ptr()));
//将绘图添加到窗口中。
窗口。添加(*绘图);
window.show_all();
//在空闲循环中,我们将调用update(axes,canvas)。
Glib::signal_idle().connect(sigc::bind(&update,&axes,&canvas));
//并启动Gtk事件循环。
Gtk::Main::run(窗口);
}捕获(已设置错误){
PyErr_Print();
}
}

我最喜欢的一直是。它非常广泛,所以对于您的需求来说可能有点太复杂了。它是跨平台的,确实有。

欧洲核子研究所生产了一些非常好的东西,我经常用它来显示神经网络数据。

Windows但我确实更喜欢跨平台,因为我大部分时间都在Linux上编写代码,我的导师也使用Windows。check MathGL功能非常丰富,是一个不错的选择,但是它的API开始有点难,下面是如何开始的:这看起来很有希望,显示的示例确实比gdchart简单得多。谢谢,它确实是一个野兽,比pplot更容易使用。当然,ROOT既不是工作环境的轻量级添加,也不是微不足道的使用。尽管如此,我还是在研究粒子物理学,所以几乎只使用它。“对ROOT的批评包括它对初学者的困难,以及它的设计和实现的各个方面。常见的挫折原因包括极端的代码膨胀、大量使用全局变量和反常的类层次结构。”我可以证明这一点。如果你碰巧有一个简单的例子说明你是如何做到这一点的,我会非常有兴趣去发现。@ZamfirKerlukson:这是一块宝石。谢谢分享。既有用又奇怪。