
matplotlib-cpp 是一个单头文件的 C++ 绘图库:它在 C++ 程序里嵌入 Python 解释器,再调用 matplotlib 完成绘图,让 C++ 代码能用接近 Matlab 与 matplotlib 的接口画出二维图、三维图和向量场图。对已经有 Python 与 matplotlib 环境的 C++ 项目来说,它是最省事的出图方式——不用再为绘图单独写一套封装,包含一个头文件、链接 libpython 就能开始画图。
30 秒速读
如果你在写 C++ 数值程序、算法原型或科研工具,需要快速把计算结果画成图,并且机器上已经装好 Python 与 matplotlib,matplotlib-cpp 值得优先试用:它提供 plt::show() 交互显示与 plt::save() 无头保存两种出图方式,支持直接编译、CMake 与 vcpkg 三种接入。反过来,如果你的目标是纯 C++ 部署、进程里已有其他嵌入 Python 的组件,或者要求严格的线程隔离,就要先评估别的绘图库——这个库在进程内只允许一个 Python 解释器。
项目信息
| 项目 | 内容 |
|---|---|
| 开发语言 | C++(单头文件 matplotlibcpp.h) |
| 绘图后端 | 嵌入 Python 解释器,调用 matplotlib |
| 接入方式 | 直接编译、CMake、vcpkg |
| 绘图类型 | 二维图、三维函数图、向量场、字符串分类横轴、图例 |
| 出图方式 | plt::show() 交互显示、plt::save() 无头保存 |
| 适用平台 | 多平台 |
| 许可证 | 以仓库 LICENSE 文件为准 |
选型对照:它和纯 C++ 绘图库比
结论先行:已经有 Python 与 matplotlib 环境、只想快速出图时,用 matplotlib-cpp 最省事;要纯 C++ 部署、不要 Python 运行时依赖时,选不依赖解释器的绘图库。
| 维度 | matplotlib-cpp | 纯 C++ 绘图库 |
|---|---|---|
| 接入成本 | 单头文件引入,接口贴近 Matlab 与 matplotlib,上手快 | 按库的 API 从头学,图表样式要自己调 |
| 图表能力 | 直接复用 matplotlib 的图表类型与样式,覆盖二维、三维与向量场 | 能力取决于所选库,复杂图表可能要自己拼 |
| 部署依赖 | 必须带 Python 解释器、matplotlib 与 libpython,部署链路更长 | 一般只需链接库文件,部署更干净 |
| 进程限制 | 进程内只允许一个 Python 解释器,不能与其他嵌入 Python 的库共存 | 无解释器冲突,线程模型由库本身决定 |
| 版本风险 | Python 版本变化可能影响兼容性,升级前要重新验证 | 版本风险集中在库本身,依赖面更窄 |
上手步骤
- 先确认环境:准备好可用的 Python 安装、Python 开发头文件、matplotlib,以及通常需要的 NumPy,C++ 程序要链接到 libpython。
- 选接入方式:小工程可以直接编译单个示例;已有 CMake 工程就按仓库说明走 CMake 配置;习惯包管理的用 vcpkg 安装。
- 跑通一个最小示例:先画一张最简单的二维折线图,确认 plt::show() 能弹出窗口或 plt::save() 能落盘,再换成自己的数据。
- 确认 Python 版本组合:据仓库说明,CMake 默认使用 Python 3,README 里个别安装示例仍写着 Python 2 路径,版本选择要按自己的工程实际核对,不要照抄示例。
- 固定兼容组合再动工:把 Python、matplotlib、NumPy 与 libpython 的版本组合记下来,后续升级任何一个都要重新编译并跑一遍示例验证。
注意事项与边界
- 单解释器限制是硬边界:项目在进程内部创建 Python 解释器,同一进程不能再使用其他会内部创建 Python 解释器的库,选型前先盘点进程里有没有这类组件。
- Python 兼容性要实测:据仓库说明,Python 兼容性可能因版本变化而出现问题,使用较新的或非标准 Python 环境时,先编译示例验证再接入工程。
- 无头环境用保存接口:没有图形界面的服务器上不要调 plt::show(),改用 plt::save() 把图存成文件,再取文件查看。
- API 覆盖范围要先查:公开摘要没有完整列出 API 覆盖范围、线程模型与异常处理行为,复杂交互或长期运行服务要先翻 README 或源码确认。
- NumPy 依赖可以裁:不需要 NumPy 的场景可以用 WITHOUT_NUMPY 宏移除依赖,但裁掉之后哪些功能受影响,要结合自己的使用场景验证。
适合谁,不适合谁
适合:需要在 C++ 程序里快速生成二维、三维、向量场或交互式图形的开发者,尤其是有现成 Python 与 matplotlib 环境、想少写绘图封装代码的数值计算、算法原型与科研工具项目。
不适合:要求纯 C++、低依赖部署的项目;进程里已有其他嵌入 Python 的组件;需要严格线程隔离或可预测部署的生产服务;以及对 Python 版本升级敏感、又不愿每次升级都重验证的团队。
获取方式
GitHub 国内访问较慢,如打不开可多刷新几次

关注「软件教程管家」
回复软件名即取即下:网盘下载链接 + 提取码,一步直达,不用再跳转。
本站资源仅供个人学习交流,请勿用于商业用途。软件与资料版权归原作者所有;如有侵权,请通过公众号「软件教程管家」联系我们,我们将在 24 小时内下架处理。查看免责声明 ›







