matplotlib-cpp是一个用于在C++中使用matplotlib绘图库的头文件库。它提供了一个简单的接口,使得在C++中创建和显示图形变得更加容易。这个库的灵感来自于Python的matplotlib库,它使得在C++中进行数据可视化变得更加便捷。
matplotlib-cpp允许在C++中使用类似Python中matplotlib的语法和功能来创建各种类型的图形,包括折线图、散点图、柱状图等。你可以使用它来可视化数据,分析模拟结果,或者创建漂亮的图形报告。
由于matplotlib-cpp是一个只含头文件的库,因此直接从github下载matplotlib-cpp的头文件就可以直接用了。
或者可以用vcpkg下载并安装matplotlib-cpp,其实两种方式都差不多,都是把这个头文件下载下来就可以了。
我就用vcpkg来下载吧。
到vcpkg的默认安装目录下就可以看到matplotlibcpp.h的头文件了。
打开VS2022创建一个C++控制台项目,然后导入头文件和库文件,由于matplotlib-cpp需要python的库文件和头文件所以需要安装python。
下面是分别要导入的头文件和库文件,把路径改为你的安装路径就可以了,下面这个vcpkg的include路径下面装的就是matplotlib-cpp.h头文件,换成你的头文件所在路径就可以了,因为matplotlib-cpp是一个只含头文件的库,没有链接库文件。
D:\c.app\Python3.9.0\include
D:\c.app\vcpkg\installed\x64-windows\include
D:\c.app\Python3.9.0\Lib\site-packages\numpy\core\include
D:\c.app\Python3.9.0\libs
博主的python和vcpkg都安装在D盘,所以可以比较轻松找到对应的头文件和库文件。
把这段代码复制到cpp文件中,然后运行代码。
#include <matplotlibcpp.h>
namespace plt = matplotlibcpp;
int main() {
std::vector<double> x = { 1, 2, 3, 4, 5 };
std::vector<double> y = { 2, 4, 6, 8, 10 };
plt::plot(x, y);
plt::xlabel("X");
plt::ylabel("Y");
plt::title("Simple Plot");
plt::show();
return 0;
}
然后就报错了。
错误一
1>D:\c.app\vcpkg\installed\x64-windows\include\matplotlibcpp.h(2014,85): error C2039: "stod": 不是 "std" 的成员
1>D:\c.app\vcpkg\installed\x64-windows\include\matplotlibcpp.h(2014,85): error C3861: “stod”: 找不到标识符
这个错误需要在matplotlib-cpp.h里面加入string头文件才可以。
错误二
1>D:\c.app\vcpkg\installed\x64-windows\include\matplotlibcpp.h(340,20): error C2766: 显式专用化;已定义“matplotlibcpp::detail::select_npy_type<int64_t>”
1>D:\c.app\vcpkg\installed\x64-windows\include\matplotlibcpp.h(342,20): error C2766: 显式专用化;已定义“matplotlibcpp::detail::select_npy_type<uint64_t>”
这个错误需要将对应位置的重定义代码注释掉
然后保存matplotlib-cpp.h文件。
运行代码,发现运行成功。
除此之外,你们可能还会遇到一个问题
LINK : fatal error LNK1104: 无法打开文件“python39_d.lib”
这个问题主要是因为你的python版本是Release版本的,而不是Debug版本的,python39_d.lib是Debug版本的python专属的链接库文件,那么只需要把VS2022的模式改为Release版就行了。
改为Release版本后,前面的头文件和库文件需要重新导入一次哦!