一 Matplot++绘图库简介
Matplot++作为C++的一个优秀可视化库,可绘制出高质量的可用于出版的图表,同时也可以应用C++的后端功能,提供几十种绘图类型,几乎囊括了常见出版要求的绘图种类。其默认颜色系也是使用了Matlab的parula颜色条,色彩使用更加鲜明和直观。更多详细内容可参考:Matplot++官网
值得注意的是,Matplot++本身不具有显示功能,它是通过调用gnuplot实现画图的一个C++数据显示库,gnuplot是一个命令行交互式绘图工具。
二 gnuplot下载与安装
gnuplot是一个命令驱动的交互式函数绘图程序,一款适用于Linux,OS / 2,MS Windows,OSX,VMS和许多其他平台的便携式命令行驱动图形工具。源代码受版权保护,但免费分发(即,您不必为此付费)。
注意:为了实现在命令窗口(CMD)下画图,我们需要配置一下系统环境变量:自定义安装目录\gnuplot\bin
三 Matplot++下载与使用
3.1在官网找到Matplot++开源项目的地址和下载地址
官网地址:Home - Matplot++
3.2下载最新的发行版和源代码
你可以选择自己编译源代码,也可以选择发布的二进制(win32和win64)静态库。编译方法可参考官方文档(英文),有机会我后面一会专门出实战使用方法。本次只使用二进制静态库。
3.3安装matplotplusplus-1.1.0-win64.exe
默认安装到:C:\Program Files\matplotplusplus 1.1.0,安装后的内容如下:
3.4新建VS项目并引用Matplot++静态库
注意:Matplot++是基于最新的C++指令集规范编写的,所以必须保证C++编译器默认支持C++17级以上规范。因此,使用MSVC也要能够支持C++17的版本,我本次采用的是VS2019专业版。
- 新建控制台应用程序:空项目testmatplot,添加cpp文件lineplots.cpp
- 测试代码如下:
#include <cmath>
#include <matplot/matplot.h>
int main()
{
using namespace matplot;
auto [X, Y] = meshgrid(iota(-8, .5, +8));
auto Z = transform(X, Y, [](double x, double y)
{ double eps = std::nextafter(0.0, 1.0);
double R = sqrt(pow(x, 2) + pow(y, 2)) + eps;
return sin(R) / R; } );
mesh(X, Y, Z);
show();// 需要调用show才能显示 return 0;
}
四 配置matplot++静态库(配置方法可以参照其他博文)
我的配置如下:
外部包含目录:C:\Program Files\matplotplusplus 1.1.0\include
库目录:C:\Program Files\matplotplusplus 1.1.0\lib;C:\Program Files\matplotplusplus 1.1.0\lib\Matplot++
库文件:nodesoup.lib;matplot.lib
注意:不论是release还是debug版都能编译通过,前提是环境配置一致且正确。