C++ 使用matplotlib画图

 C++的matplotlib是基于C++调用了Python从而使用matplotlib。

提供了以下功能:  (参考:https://blog.csdn.net/xhtchina/article/details/131915565)

  1. 基本绘图:matplotlib-cpp 支持许多基本的 2D 图形,包括线图、散点图、条形图、直方图、饼图等。
  2. 子图:可以在一个画布上创建多个子图,每个子图可以独立绘制。
  3. 颜色、标记和线型:可以自定义每个图形的颜色、标记(数据点的形状)和线型(实线、虚线等)。
  4. 图例和标题:可以为每个图形添加图例和标题,以解释图形的含义。
  5. 坐标轴设置:可以自定义坐标轴的范围、刻度和标签。
  6. 网格线:可以添加网格线,以便于观察数据。
  7. 文本和标注:可以在图形上添加文本和标注,以强调特定的数据点或区域。
  8. 保存和显示:可以将图形保存为各种格式的文件,或在窗口中直接显示。

头文件及基本功能示例:

// 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})

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值