命令行下载matplotlibcpp
git clone https://github.com/lava/matplotlib-cpp
将matplotlibcpp.h移动到自己所用的工程
CMakeList.txt文件如下所示
cmake_minimum_required(VERSION 3.0.2)
project(huatu)
set(CMAKE_CXX_STANDARD 11)
file(GLOB_RECURSE PYTHON2.7_LIB "/usr/lib/python2.7/config-x86_64-linux-gnu/*.so")
set(PYTHON2.7_INLCUDE_DIRS "/usr/include/python2.7")
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
)
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES huatu
# CATKIN_DEPENDS roscpp std_msgs
# DEPENDS system_lib
)
include_directories(include
${PYTHON2.7_INLCUDE_DIRS}
)
add_executable(huatu src/main.cpp)
target_link_libraries(huatu ${PYTHON2.7_LIB})
#include "matplotlib.h"
namespace plt = matplotlibcpp;
int main()
{
plt::plot({1,3,2,4});
plt::show();
}
#include "matplotlibcpp.h"
#include
namespace plt = matplotlibcpp;
int main()
{
std::vector<std::vector<double>> x, y, z;
for (double i = -5; i <= 5; i += 0.25) {
std::vector<double> x_row, y_row, z_row;
for (double j = -5; j <= 5; j += 0.25) {
x_row.push_back(i);
y_row.push_back(j);
z_row.push_back(::std::sin(::std::hypot(i, j)));
}
x.push_back(x_row);
y.push_back(y_row);
z.push_back(z_row);
}
plt::plot_surface(x, y, z);
plt::show();
}
#include
#include "matplotlibcpp.h"
namespace plt = matplotlibcpp;
int main()
{
int n = 1000;
std::vector<double> x, y, z;
for (int i = 0; i < n; i++) {
x.push_back(i * i);
y.push_back(sin(2 * M_PI * i / 360));
z.push_back(log(i));
if (i % 10 == 0) {
plt::clf();
plt::plot(x, y);
plt::named_plot("log(x)", x, z);
plt::xlim(0, n * n);
plt::title("Simple figure");
plt::legend();
plt::pause(0.01);
}
}
}
#include
#include "matplotlibcpp.h"
#include
namespace plt = matplotlibcpp;
int main()
{
std::vector<double> x(1000);
std::vector<double> y(1000);
for (size_t i = 0; i < x.size(); i++)
{
x[i] = i / 100.0;
y[i] = sin(2.0 * M_PI * 1.0 * x[i]);
}
plt::xkcd();
plt::[添加链接描述](https://blog.csdn.net/sdas653/article/details/134234279?ops_request_misc=&request_id=&biz_id=102&utm_term=matplotlibC%20%20%E7%94%BB%E5%9B%BE&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-134234279.142%5Ev99%5Epc_search_result_base4&spm=1018.2226.3001.4187)plot(x, y);
plt::title("Hello");
plt::show();
}
参考博客:C++ 使用matplotlib画图
提供了以下功能:
(1)基本绘图:matplotlib-cpp 支持许多基本的 2D 图形,包括线图、散点图、条形图、直方图、饼图等
(2)子图:可以在一个画布上创建多个子图,每个子图可以独立绘制
(3)颜色、标记和线型:可以自定义每个图形的颜色、标记(数据点的形状)和线型(实线、虚线等)
(4)图例和标题
(5)坐标轴设置
(6)网格线
(7)文本和标注
(8)保存和显示:可以将图形保存为各种格式的文件,或在窗口中直接显示
// 设置输出图像的大小为1200x780像素
plt::figure_size(1200, 780);
// 轨迹用红色虚线
plt::plot(x1, y1, "r--");
// 添加图例 真实轨迹用蓝色实线(默认实线)
plt::named_plot("truth", x2, y2, "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("./a.png");
// 添加三个子图
// 第一个子图
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);
// 设置标签
plt::xlabel("x label");
plt::ylabel("y label");
plt::set_zlabel("z label"); // set_zlabel rather than just zlabel, in accordance with the Axes3D method