引言

关于c++的可视化一直是不太方便,个人使用过的可视化方案有基于ROS的RVIZ工具,但是这个是基于linux环境的在windows环境下不太适用。如果是小的demo的开发,并且希望在windows端的话,可以使用wsl2在windows 端使用ros的rviz工具进行可视化。个人还使用过opencv的库进行过可视化,但是可视化化效果有点“小丑”。目前找到了一个配置较为简单,使用起来和matlab的画图很类似并且审美也可接受,缺点就是暂时无法画动图,原因是图的更新频率太低了。

Matplot++概述

Matplot++ 是一个用于数据可视化的图形库,它提供交互式绘图、以高质量格式导出科学出版物绘图的方法、与类似库一致的紧凑语法、数十种具有专用算法的绘图类别、多种编码样式,并支持通用后端。
下面是一些效果图的示例,官网文档链接为:Home - Matplot++ (alandefreitas.github.io)

安装配置

由于这部分已经有大佬写的很详细了这里就不再赘述了。主要安装主要有gnuplot下载与安装&Matplot++下载和vs的配置。推荐大佬写的详细安装步骤 Matplotplusplus绘图库的引用_晓程序员的博客-CSDN博客
在这里分享一下我的配置,帮助大家排除一些问题。

使用简介

画矩形

1
2
3
4
5
vector_1d x = { w->area[0], w->area[0] + w->area[2], w->area[0] + w->area[2], w->area[0] };
vector_1d y = { w->area[1], w->area[1], w->area[1] + w->area[3], w->area[1] + w->area[3] };
std::string color = "b";
matplot::fill(x, y, color); //x,y为矩形的左下和右上坐标
hold(on); //添加在同一图中

画点

1
2
3
4
5
6
7
8
9
10
11
12
13
vector_1d x0 = { map.start.first };
vector_1d y0 = { map.start.second };
auto sta = scatter(x0, y0, 10); //起点
sta->marker_color({ 0.f, 0.f, 0.f });
sta->marker_face_color({ 0.5f, .5f, .7f });

vector_1d x1 = { map.goal.first };
vector_1d y1 = { map.goal.second };
auto goa = scatter(x1, y1, 10); //终点
goa->marker_color({ 0.f, 0.f, 0.f });
goa->marker_face_color({ 0.5f, .4f, .1f });

axis(matplot::equal);

画线

1
2
3
4
5
6
7
8
9
10
vector<double> x;
vector<double> y;
for (auto p : path) {
x.push_back(p.first);
y.push_back(p.second);
}
auto p = plot(x, y);
p->line_width(1.5);
p->color({ 1.0f, 0.f, 0.f });
matplot::show();

效果展示

跑一个prm算法的小Demo

具体的使用可以查看官方文档哦~