C++的matplotlib是基于C++调用了Python从而使用matplotlib。
提供了以下功能: (参考:https://blog.csdn.net/xhtchina/article/details/131915565)
- 基本绘图:matplotlib-cpp 支持许多基本的 2D 图形,包括线图、散点图、条形图、直方图、饼图等。
- 子图:可以在一个画布上创建多个子图,每个子图可以独立绘制。
- 颜色、标记和线型:可以自定义每个图形的颜色、标记(数据点的形状)和线型(实线、虚线等)。
- 图例和标题:可以为每个图形添加图例和标题,以解释图形的含义。
- 坐标轴设置:可以自定义坐标轴的范围、刻度和标签。
- 网格线:可以添加网格线,以便于观察数据。
- 文本和标注:可以在图形上添加文本和标注,以强调特定的数据点或区域。
- 保存和显示:可以将图形保存为各种格式的文件,或在窗口中直接显示。
头文件及基本功能示例:
// matplotlib需要的头文件
#include "matplotlibcpp.h"
#include <opencv2/core/core.hpp>
// 其他
#include <vector>
// matplotlib命名空间
namespace plt = matplotlibcpp;
int main()
{
std::vector<double> x_truth, y_truth;
std::vector<double> x_es, y_es;
for(int i=0; i<100; ++i)
{
x_truth.push_back(i);
y_truth.push_back(0.5 * i);
}
for(int i=0; i<100; ++i)
{
x_truth.push_back(i);
y_truth.push_back(i);
}
// 画图
// 设置输出图像的大小为1200x780像素
plt::figure_size(1200, 780);
plt::plot(x_es, y_es, "r--"); // 估计轨迹用红色虚线
// 给该线添加图例
plt::named_plot("truth",x_truth, y_truth, "b"); // 真实轨迹用蓝色实线(默认实线)
// 设置x轴的范围为[0,100],设置y轴的范围为[0,100]
plt::xlim(0, 100);
plt::ylim(0, 100);
// 添加图表标题
plt::title("Compare figure");
// 启用图例
plt::legend();
// 显示图像
plt::show();
// 保存图像(文件格式由扩展名确定)
plt::save("./compare_plot.png");
return 0;
}
其他用法:
// 添加三个子图
// 第一个子图
plt::subplot(2, 2, 1);
plt::plot(x, y, "g--");
// 第二个子图
plt::subplot(2, 2, 2);
plt::plot(x, z);
// 第三个子图
plt::subplot(2, 2, 3);
plt::plot(x, w);
CMakeLists写法:
cmake_minimum_required(VERSION 3.6)
project(pose_compare_plot)
find_package(PythonLibs REQUIRED)
add_executable(pose_compare_plot pose_compare_plot.cpp)
target_include_directories(pose_compare_plot PRIVATE ${PYTHON_INCLUDE_DIRS})
target_link_libraries(pose_compare_plot ${PYTHON_LIBRARIES})
结果: