当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《用C++绘制图形和图表的简单方法?》经验,为你挑选了4个好方法。

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

想到什么图书馆?如果我的教练很容易编译我的代码,我非常喜欢那些我喜欢的小版本.我检查了gdchart,但它似乎太沉重了.我只想要一个简单的xy时间轴图.

谷歌图表当然是不可能的,如果你读过这个类似的问题.


相关文章C++中的Scatter Plots.



1> marcog..:

我最喜欢的一直是gnuplot.这是非常广泛的,所以它可能有点太复杂,不能满足您的需求.它是跨平台的,有一个C++ API.



2> Bill Lynch..:

老实说,我和你在同一条船上.我有一个C++库,我想连接到图形实用程序.我最终使用了Boost Python和matplotlib.这是我能找到的最好的一个.

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

这是我使用的代码示例:

#include 
#include 
#include 

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();
    }
}



3> alvatar..:

我用过这个"便携式绘图仪".它非常小巧,多平台,易于使用,您可以将其插入不同的图形库.PPLOT

(仅适用于情节部分)

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



4> Ed James..:

Cern的ROOT产生了一些相当不错的东西,我用它来显示神经网络数据.


虽然ROOT当然既不是对你的工作环境的轻量级补充,也不是微不足道的.不过,我是粒子物理学,所以几乎完全使用它.
推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有