• C++可视化和图表库


    目录

    一、MathGL

    二、Gnuplot

    三、ChartDirector

    四、Qt Charts

    五、KD Chart

    六、QWT

    七、QCustomPlot

    八、QtiPlot

    九、C++和JS 图表库混合编程

    1、Qt+Echarts

    2、其它JS图表库


    一、MathGL

            mathGL就是用来绘制一些统计图形的一个CPP的库, 实际上就是和gnuplot类似的一个C++的库,很适合科学计算的结果分析和统计,另外还有QT,python等支持的接口,只是在编译库的时候要加上相应的option,这个库用起来很好,减少了很多工作量,其核心调用方式就是使用一个函数指针。

    1. #include <mgl2\mgl.h>
    2. int main()
    3. {
    4. mglGraph gr;
    5. gr.Title("MathGL Demo");
    6. gr.SetOrigin(0, 0);
    7. gr.SetRanges(0, 10, -2.5, 2.5);
    8. gr.FPlot("sin(1.7*2*pi*x) + sin(1.9*2*pi*x)", "r-2");
    9. gr.Axis();
    10. gr.Grid();
    11. gr.WriteFrame("mgl_example.png");
    12. }

     

    二、Gnuplot

            Gnuplot是一个命令行的交互式绘图工具(command-driven interactive function plotting program)。用户通过输入命令,可以逐步设置或修改绘图环境,并以图形描述数据或函数,使我们可以借由图形做更进一步的分析。

            gnuplot是由Colin Kelly和Thomas Williams于1986年开始开发的科学绘图工具,支持二维和三维图形。它的功能是把数据资料和数学函数转换为容易观察的平面或立体的图形,它有两种工作方式,交互式方式和批处理方式,它可以让使用者很容易地读入外部的数据结果,在屏幕上显示图形,并且可以选择和修改图形的画法,明显地表现出数据的特性。

    三、ChartDirector

     ChartDirector 是用于 Windows 和 Web 应用程序的专业图表组件。它带有广泛的图表范围,包括饼图、甜甜圈、条形图、线条、样条曲线、阶梯线、趋势线和曲线拟合。图表可以在屏幕上显示或导出为 PDF、SVG、PNG、JPG、GIF 和 BMP 格式。您可以自定义每个图表细节,包括轴、标记和区域、文本、标签和自动缩放。ChartDirector 支持 .NET、.NET Core、WPF、http://ASP.NET MVC、Web Forms 和 Windows(C#、VB 和其他 CLI 语言)、C++、Java、JSP、ASP、COM、VB、VBScript、VBA、JavaScript、PHP、 Perl、Python 和 Ruby。它适用于 Windows、Linux、FreeBSD、Solaris、Mac OS X 系统。

      广泛的图表类型- 饼图、甜甜圈、条形图、直线、样条曲线、阶梯线、趋势线、曲线拟合、线间填充、区域、带、散点、气泡、浮动框、盒须、瀑布、轮廓、热图、表面、矢量、金融、甘特图、雷达、极地、玫瑰、金字塔、锥体和漏斗。

                一直寻找一款Qt下的图形控件库,最后ChartDirector控件映入眼球。ChartDirector控件使用方便,快捷,灵活,功能强大,交互性强。在web服务器以及嵌入式应用程序开发中,它是一种非常理想的工具,拥有丰富的图表图形组件库。ChartDirector 是一款商业的图表库,有多种语言的版本,使用它做的图表非常的精细漂亮,提供免费版本,但会出现logo信息。网上有很多关于它的破解方法。圆形图表(饼状图),圆环图,柱形图(条形图),直线图,曲线图,梯级线图,趋势线图,曲线拟合图,线间色图,区域图,散布图(散形图),泡沫图,floating box,box-whisker,瀑布图,金融类图表,甘特图表,向量图,雷达图,极线图,rose,XY轴交换(旋转图表)和3D效果等效果。

     s

         

    四、Qt Charts


    来自:Qt 官方提供

    基于:Qt Graphics View 框架

    兼容性:Qt5.7 及以上版本可直接使用;Qt5.7 之前的版本(最早只能到 Qt5.4),需要自行编译使用;更早的版本中,只能使用商业版 Qt。

    许可模式:长久以来都是收费的,只有商业版才可以使用,但从 Qt5.7 开始,以 GPLv3 许可(针对开源用户)提供给开源版使用。

    主要特点:美观、现代、性能好、易上手。。。由于使用了 Qt Graphics View 框架,因此可以很轻松地被集成到现代用户界面。而且 Qt Charts 可用作 QWidgets、QGraphicsWidget 或 QML 类型。通过选择一个图表主题,可以轻松地创建令人印象深刻的图表。

    主要功能:提供了一组更受欢迎、易于使用的图表组件:条形图、极坐标图、饼图、散点图、以及许多示例和主题。

    五、KD Chart


    主页:http://www.kdab.com/development-resources/qt-tools/kd-chart/

    来自:KDAB 的解决方案

    基于:Qt Model-View,允许重用现有的数据模型来创建图表。

    兼容性:支持 Qt4 和 Qt5

    最新版本:KD Chart 2.6.0

    许可模式:基于 GPL 或商业许可,可自行选择。

    主要特点:用于创建业务图表,是同类中最强大的 Qt 组件。除了具有所有标准功能之外,它能够使开发人员设计和管理大量的轴,并提供复杂的定制。

    主要功能:提供了非常有用的甘特图(包含:Gantt charts),以及流行的图表:条形图、折线图、饼图。通过使用 KDChartWidget,可以简单地将图表集成到 Qt 应用程序。

    六、QWT


    主页:http://qwt.sourceforge.net/

    全称:Qt Widgets for Technical Applications

    基于:Qt Widgets

    兼容性:支持 Qt4 和 Qt5

    最新版本:Qwt 6.1.3 ,发布日期:2016/06/12

    许可模式:基于 LGPL 版权协议的开源项目

    主要特点:成熟、高效,有良好的文档,并提供了大量的示例,与大量(数千、数十万)的点工作得很好。

    主要功能:包含了基本的 2D 图,例如:散点图、直方图、散点图,还提供了刻度、滑块、圆盘、温度计、仪表盘等。

    七、QCustomPlot


    主页:http://www.qcustomplot.com/

    基于:Qt Widgets

    兼容性:支持 Qt4.6 - Qt5.7

    最新版本:QCustomPlot 2.0.0-beta,发布日期:2016/09/13

    许可模式:源代码和软件根据 GNU GPL 许可,除非另有说明。

    主要特点:界面干净、简洁、小巧玲珑(只有两个源文件,没有进一步的依赖性),很容易扩展,并且有良好的文档。专注于制作好看,出版高质量的 2D 绘图、图形和图表,以及为实时可视化应用程序提供更高的性能。

    主要功能:提供了漂亮的 2D 图 ,例如:曲线图、趋势图、坐标图、柱状图等。

    注意:可在项目中直接使用两个源文件,或预先编译成库。

    八、QtiPlot


    主页:http://www.qtiplot.com/ 

    基于:OpenGL 的 3D 绘图

    兼容性:支持 Qt4 和 Qt5

    最新版本:QtiPlot 0.9.9.8 release 版,发布日期:2016/12/12

    许可模式:基于 GPL 或商业许可,可自行选择。

    主要特点:用于交互式科学绘图和数据分析,类似于专有程序 Origin 或 SigmaPlot,在大学中被广泛使用。

    主要功能:支持 2D 和 3D 绘图,具有一些高级功能,例如:统计分析、曲线拟合、图像分析工具。

    注意:虽然 QtiPlot 开源免费,但是免费指的是它的源代码,其编译好的二进制代码(也就是可执行文件)是收费的,因此,如果你不想支付费用的话,则可以使用 GPL 许可,自己编译。

    九、C++和JS 图表库混合编程

    1、Qt+Echarts

        ECharts,商业级数据图表,它是一个纯JavaScript的图标库,常用的图表形式,如折线图、柱状图,饼状图、雷达图等,都可绘制,而且效果好看。这是做Web前端的,经常会用到的工具。这里我就不细说ECharts,一则这个官网教程很详细,再则我也是个门外汉,只会简单的。而Qt要显示web部分的东西,肯定是要用到QtWebkit(Qt4)或者 QtWebEngine(Qt5),这个视版本而定。

             ECharts 提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。

    2、其它JS图表库

    Highcharts - 国外
    G2 - The Grammar Of Graphics,由阿里开发


    十、ROOT        

            它提供了处理大数据处理,统计分析,可视化和存储所需的所有功能。它主要用C ++编写,但也可以与其它语言,例如Python和R.集成。

    Galleries of images produced with ROOT - ROOT

    十一、VTK

            tk是一个3D计算机图形学、图象处理及可视化工具包.支持多语言。

            https://kitware.github.io/vtk-examples/site/

    十二、matplotlib

            Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。后来有开源项目lava/matplotlib-cpp为c++做了接口,使得我们可以在c++中使用python的matplotlib库进行绘图


    Matplotlib 中文:https://www.matplotlib.org.cn/

    一些应用实例和vs配置:https://mangoroom.cn/cpp/call-matplotlib-on-cpp.html

    matplotlib-cpp接口工程:https://github.com/lava/matplotlib-cpp

    Matplotlib for C++使用手册:https://matplotlib-cpp.readthedocs.io/en/latest/
     

    十三、EasyX

            EasyX图形库是一个比较简单容易上手的可视化界面工具包,一般配合VC6.0就可以使用,也可以配合VS系列,这里简单介绍下VC6.0的安装和简单使用。

    EasyX Graphics Library for C++

  • 相关阅读:
    HTML5离线储存
    CSS 之 优雅的垂直居中
    K8S Deployment 简介, 1个简单的Kubernetes Deployment YAML 文件
    ES6的模板字符串使用
    OA产品选型的指导原则
    Linux下C++编程-进度条
    项目一共30个模块,你叫我maven版本一个个手动改?
    spark 窗口函数对多列数据进行排名示例
    JavaScript---DOM---DOM简介、获取元素、事件基础、操作元素---11.5
    【CTA系列】复合中短周期双均线策略
  • 原文地址:https://blog.csdn.net/kupe87826/article/details/126911034