matplotlibcpp c++绘图库 及 其它可视化库

matplotlibcpp是c++的库,matplotlibcpp库和python中的matplotlib库一样使用,它是python中的matplotlib库的封装,它依赖python中的matplotlib库

一、安装

matplotlibcpp库依赖python中的matplotlib库,所以需要安装上python中的matplotlib库即可

sudo apt-get install python-matplotlib python-numpy python2.7-dev

然后到GitHub上下载c++的头文件,ubuntu下使用git clone 下载就行,下载下来的文件可以放到任意位置,该位置的路径需要在cmak文件中被包含。

git clone https://github.com/lava/matplotlib-cpp

在自己工程下对应的的CMakeLists.txt文件中增加的内容在下面统一介绍。

二、库简单例子使用

如果使用vscode编程需要在c_cpp_properties.json文件下增加matplotlibcpp库所在路径。 github中有更多例子

最简单的基本使用方法:
例子一:

#include "matplotlibcpp.h"
namespace plt = matplotlibcpp;
int main() {
    plt::plot({1,3,2,4});
    plt::pause(2); //最好加上该句,否则有时候显示不了图像,或者图像显示很慢
    plt::show();  
}

例子二:

#include "matplotlibcpp.h"
#include <vector>
#include <cmath>

namespace plt = matplotlibcpp;

int main() {
    std::vector<double> t(1000);
    std::vector<double> x(t.size());

    for(size_t i = 0; i < t.size(); i++) {
        t[i] = i / 100.0;
        x[i] = sin(2.0 * M_PI * 1.0 * t[i]);
    }

    plt::xkcd();
    plt::plot(t, x);
    plt::title("AN ORDINARY SIN WAVE");
    plt::save("xkcd.png");
}

三、CMakeLists.txt文件

如果 CMake 版本<= 3.11:

add_compile_options(-std=c++11)
##python
find_package(PythonLibs 2.7)
#include_directories(${PYTHON_INCLUDE_DIRS})  #使用这方式可以替代下面这行
target_include_directories(myproject PRIVATE ${PYTHON_INCLUDE_DIRS})

##matplotlibcpp 
include_directories("/home/jack/slam_book/thirdparty/matplotlib-cpp/") #路径需要根据自己路径做调整

target_link_libraries(myproject ${PYTHON_LIBRARIES})

CMake 3.12 以后版本 推荐使用下面方式:

add_compile_options(-std=c++11)
##python
find_package(Python2 COMPONENTS Development NumPy)
#include_directories(${PYTHON_INCLUDE_DIRS}) #使用这方式可以替代下面这行
target_include_directories(myproject PRIVATE ${Python2_INCLUDE_DIRS} ${Python2_NumPy_INCLUDE_DIRS})

##matplotlibcpp  下面路径需要根据自己路径做调整
include_directories("/home/jack/slam_book/thirdparty/matplotlib-cpp/")

target_link_libraries(myproject Python2::Python Python2::NumPy)

四、库的相关绘制样式

4.1线条相关属性标记设置:
线条风格linestyle或ls  描述
‘-‘                       实线
‘:’                       虚线
‘–’                       破折线
‘None‘、‘‘,’’          什么都不画
‘-.’                   点划线
4.2线条标记
标记maker    描述
‘o’          圆圈  
‘.’          点
‘D’          菱形  
‘s’          正方形
‘h’          六边形1    
‘*’          星号
‘H’          六边形2    
‘d’          小菱形
‘_’          水平线 
‘v’          一角朝下的三角形
‘8’          八边形 
‘<’          一角朝左的三角形
‘p’          五边形 
‘>’          一角朝右的三角形
‘,’          像素  
‘^’          一角朝上的三角形
‘+’          加号  
‘\  ‘        竖线
‘None’,’’,’ ‘   无   
‘x’           X
4.3颜色缩写
字符      颜色   
‘b’       蓝色  
‘g’       绿色
‘r’       红色  
‘y’       黄色
‘c’       青色
‘k’       黑色   
‘m’       洋红色 
‘w’       白色

五、库的更多使用介绍

绘制各种各样的散点图:https://www.cnblogs.com/sench/p/9522627.html
Matplotlib库学习:http://blog.itpub.net/69908432/viewspace-2660537/
python Matplotlib 可视化总结归纳(一) 折线图、散点图及其坐标轴属性设置:
https://blog.csdn.net/haikuotiankong7/article/details/90547084
python Matplotlib 可视化总结归纳(二) 绘制多个图像单独显示&多个函数绘制于一张图:
https://blog.csdn.net/haikuotiankong7/article/details/90551841

六、c++其它可视化库

6.1、 madplotlib : https://github.com/madplotlib/madplotlib 注意是 ma‘d’plot 不是ma‘t’plot
6.2、 MathGL 库 :
6.3、 root 库
6.4、 Gnuplot 库
6.5、QtChart以及与Qt相关的 库
6.6、 ChartDirector 库
注:6.2–6.6的库相关介绍可在这博客中观看:https://blog.csdn.net/chyuanrufeng/article/details/102808715

七、错误修改

在这里插入图片描述若图片显示不出来,请参考下面这个错误:

error: expected ‘,’ before ‘)’ token 
  static_assert(sizeof(long long) == 8);
                                     ^

解决办法:
当使用cmake编译时报以上错误的时候,是因为matplotlibcpp.h文件中static_assert()使用的有问题,需要到matplotlib.h文件中对应位置更改成以下样子,即加个“,”和描述就可以啦。

static_assert(sizeof(long long) == 8, "long type must occupy 8 bytes");
  • 23
    点赞
  • 151
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值