【C++】开源:matplotlib-cpp静态图表库配置与使用

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍matplotlib-cpp图表库配置与使用。
无专精则不能成,无涉猎则不能通。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • :smirk:1. 项目介绍
    • :blush:2. 环境配置
    • :satisfied:3. 使用说明

😏1. 项目介绍

项目Github地址:https://github.com/lava/matplotlib-cpp

matplotlib-cpp 是一个用于 C++ 的简易接口,它允许你在 C++ 程序中使用 Python 的 matplotlib 库来绘制图表。这个库提供了一个类似于 matplotlib 的 API,使得在 C++ 中生成各种类型的图表变得更加简单和方便。

以下是 matplotlib-cpp 的一些主要特点和功能:

1.轻量级:matplotlib-cpp 是一个轻量级的库,只包含少量的头文件,并且没有其他的依赖项。这使得它很容易集成到你的项目中。

2.简单易用:matplotlib-cpp 提供了与 matplotlib 类似的函数和方法,使得在 C++ 中绘制图表变得直观和易于理解。你可以使用类似于 Python 的语法来创建图表、设置图表属性和保存图表。

3.支持多种图表类型:matplotlib-cpp 支持绘制多种类型的图表,包括线图、散点图、柱状图、饼图、等高线图等。你可以选择适合你数据展示需求的图表类型。

4.支持自定义设置:你可以自定义图表的各种属性,如标题、标签、坐标轴范围、图例、颜色等。这样你可以根据具体需求来设计和美化图表。

5.与 Python 的无缝集成:使用 matplotlib-cpp,你可以在 C++ 代码中调用 Python 的 matplotlib 库来生成图表。这使得你可以利用 Python 在图表方面丰富的生态系统和强大的功能来扩展你的 C++ 应用程序。

😊2. 环境配置

下面进行环境配置:

# 安装python包
sudo apt install python3 python3-pip
pip3 install matplotlib numpy
# 源码编译
git clone https://github.com/lava/matplotlib-cpp.git
cd matplotlib-cpp
mkdir build && cd build
cmake ..
make
sudo make install

编译程序:

# ubuntu18
g++ -o main main.cpp -std=c++11 -I/usr/include/python2.7 -lpython2.7
# ubuntu20
g++ -o main main.cpp -std=c++11 -I/usr/include/python3.8 -lpython3.8

😆3. 使用说明

下面进行使用分析:

最简单的示例:

#include "matplotlibcpp.h"
namespace plt = matplotlibcpp;
int main() {plt::plot({1,3,2,4});plt::show();
}

另一个复杂的示例,将图表保存为图片:

#include "matplotlibcpp.h"
#include <cmath>namespace plt = matplotlibcpp;int main()
{// 数据处理int n = 5000;std::vector<double> x(n), y(n), z(n), w(n,2);for(int i=0; i<n; ++i) {x.at(i) = i*i;y.at(i) = sin(2*M_PI*i/360.0);z.at(i) = log(i);}// 设置分辨率plt::figure_size(1200, 780);// Plot line from given x and y data. Color is selected automatically.plt::plot(x, y);// Plot a red dashed line from given x and y data.plt::plot(x, w,"r--");// Plot a line whose name will show up as "log(x)" in the legend.plt::named_plot("log(x)", x, z);// 设置x轴plt::xlim(0, 1000*1000);// 图表标题plt::title("Sample figure");// 添加图例plt::legend();// 保存为照片plt::save("./basic.png");
}

一个三维图形示例:

#include "matplotlibcpp.h"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();
}

在这里插入图片描述

以上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/20237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DC.js教程_编程入门自学教程_菜鸟教程-免费教程分享

教程简介 DC.js 是一个优秀的 JavaScript 库&#xff0c;用于在浏览器、移动设备中进行数据分析&#xff0c;最终有助于创建数据可视化&#xff1b;DC.js 是一个用于探索大型多维数据集的图表库&#xff0c;它依靠 D3.js 引擎以 CSS 友好的 SVG 格式呈现图表。它允许呈现复杂的…

ES6 - 数组新增的一些常用方法

文章目录 1&#xff0c;Array.from()2&#xff0c;Array.of()3&#xff0c;find()&#xff0c;findIndex()&#xff0c;findLast()和findLastIndex()4&#xff0c;Array.fill()5&#xff0c;keys()&#xff0c;values() 和 entries()6&#xff0c;Array.includes()7&#xff0c…

flask-----请求和响应,session

1 所有web:请求对象&#xff0c;响应对象(go,java,ptyhon) django&#xff1a;request&#xff08;每个请求一个request&#xff09;&#xff0c;新手四件套 flask&#xff1a;requset&#xff1a;全局的&#xff0c;但是也是每个请求一个request&#xff0c;新手三件套 2 fl…

【uniapp 报错 Cannot read properties of null (reading ‘offsetWidth‘)解决办法】

该错误通常是由于访问了一个空值的offsetWidth而引起的。解决方法如下&#xff1a; 检查代码中是否有访问了空值的情况&#xff0c;比如变量未初始化或者传入了空值参数或者事件未定义。 在操作元素之前&#xff0c;确保元素已经被正确加载。可以使用如下方法&#xff1a; <…

解决vue-print-nb-jeecg打印el-table表格预览竖版显示不全的问题!

第一步: 下载 vue-print-nb-jeecg 插件 npm install vue-print-nb-jeecg –save第二步: 在main.js中,引用并注册全局使用 import Print from vue-print-nb-jeecg Vue.use(Print);第三步: 需要打印的元素添加 id <div id"printMe">xxxx内容</div>第四步…

某行动态cookie反爬虫分析

某行动态cookie反爬虫分析 1. 预览 反爬网址(base64): aHR0cDovL3d3dy5wYmMuZ292LmNu 反爬截图&#xff1a; 需要先加载运行js代码&#xff0c;可能是对环境进行检测&#xff0c;反调试之类的 无限debugger 处理办法 网上大部分人说的都是添加cookie来解决。 那个noscript…

友盟+、GrowingIO和神策数据 对比

对于市面上的数据平台&#xff0c;先简单归个类。 1、移动统计平台&#xff0c;如友盟、talkingdata、百度云统计、腾讯移动应用统计等。 相同点是数据源都是埋点数据。友盟有免费版本。 前端效果&#xff1a;展现形式上为BI报表。 常用操作是页面内点击和筛选。 使用要求…

could not import go.etcd.io/etcd/clientv3-go

问题描述 今天在封装etcd的时候导包报错: could not import go.etcd.io/etcd/clientv3 (no required module provides package "go.etcd.io/etcd/clientv3") 问题解决: get:确保下载了client包 go get go.etcd.io/etcd/client tidy go mod tidy 本文由 mdnice 多平台…

yolov8-制作数据集,数据集格式转换(yolo格式-voc格式)附完整代码

yolo训练时可使用的数据集格式为yolo格式以及voc格式&#xff0c; voc格式的数据集在训练时需要先转换为yolo格式&#xff0c;然后根据自己的数据集的位置更改yaml配置文件的文件路径即可。基于目前对Yolo系列训练模型的讲解已经很全面&#xff0c;所以本文主要讲解yolo数据集与…

C#中 使用yield return 优化大数组或集合的访问

概要 我们在开发过程中&#xff0c;经常需要在一个很大的数组或集合中搜索元素&#xff0c;以满足业务需求。 本文主要介绍通过使用yield return的方式&#xff0c;避免将大量数据全部加载进入内存&#xff0c;再进行处理。从而提高程序的性能。 设计和实现 基本业务场景&a…

docker安装nginx并配置SSL

1、拉取镜像 docker pull nginx2、启动nginx容器&#xff0c;复制一份默认配置文件出来 // 以nginx镜像为基础镜像创建一个名为nginx01的容器 docker run -d -p 80:80 --name nginx01 nginx创建成功后会看到nginx的欢迎页面 3、挂载nginx目录 拷贝nginx的配置信息到主机目录…

Nginx面试题

使用过nginx&#xff0c;它在业务里承担什么角色&#xff0c;为什么要用&#xff1f; 从单机架构到集群架构的转变&#xff0c;需要一个实现负载均衡和反向代理功能的软件&#xff0c;加上nginx可以非常轻松的解决掉很多前端常见的需求&#xff0c;比如gzip压缩&#xff0c;跨…

C语言假期作业 DAY 12

一、选择题 1、请阅读以下程序&#xff0c;其运行结果是&#xff08; &#xff09; int main() { char cA; if(0<c<9) printf("YES"); else printf("NO"); return 0; } A: YES B: NO C: YESNO D: 语句错误 答案解析 正确答案&#xff1a; A 0<c&l…

【图论】强连通分量

一.定义 强连通分量&#xff08;Strongly Connected Components&#xff0c;简称SCC&#xff09;是图论中的一个概念&#xff0c;用于描述有向图中的一组顶点&#xff0c;其中任意两个顶点之间都存在一条有向路径。换句话说&#xff0c;对于图中的任意两个顶点u和v&#xff0c;…

Python爬虫—破解JS加密的Cookie

前言 在进行网站数据爬取时&#xff0c;很多网站会使用JS加密来保护Cookie的安全性&#xff0c;而为了防止被网站反爬虫机制识别出来&#xff0c;我们通常需要使用代理IP来隐藏我们的真实IP地址。 本篇文章将介绍如何结合代理IP破解JS加密的Cookie&#xff0c;主要包括以下几个…

el-select 分页加载

el-select 分页加载 el-select 分页懒加载监听的指令——loadMore指令的使用 el-select 分页懒加载 针对数据量大的选择器&#xff0c;需要分页从后端接口获取数据&#xff0c;前端监听选择器下拉框的滚动事件&#xff0c;当往下滚动至底部一定位置时&#xff0c;调接口 监听…

银河麒麟V10 QtCreator安装配置说明(断网离线)

文章目录 1.安装要求:2.安装Qt1.安装要求: 拥有Qt软件安装包qt5.12-arm链接:https://pan.baidu.com/s/1FJerT6SckfjABxAn60rsrA?pwd=mfi6 提取码:mfi6 2.安装Qt 1)拷贝Qt软件包qt5.12-arm至系统/home/kylin/桌面 2)安装Qt软件包 cd /home/kylin/qt5.12-arm/桌面 su…

小研究 - 基于解析树的 Java Web 灰盒模糊测试(一)

由于 Java Web 应用业务场景复杂, 且对输入数据的结构有效性要求较高, 现有的测试方法和工具在测试Java Web 时存在测试用例的有效率较低的问题. 为了解决上述问题, 本文提出了基于解析树的 Java Web 应用灰盒模糊测试方法. 首先为 Java Web 应用程序的输入数据包进行语法建模创…

Flutter:gsy_flutter_demo项目学习——布局切换动画、列表滑动监听、列表滑动到指定位置、高斯模糊

前言 gsy_flutter_demo是一个关于各种小案例和小问题的方案解决。项目是由flutter大佬恋猫de小郭维护的 项目地址&#xff1a;https://github.com/CarGuo/gsy_flutter_demo 感兴趣的可以看一下大佬的文章&#xff1a;Flutter完整开发实战详解系列&#xff0c;GSY Flutter 系…

[SQL挖掘机] - 窗口函数 - lag

介绍: lag() 是一种常用的窗口函数&#xff0c;它用于获取某一行之前的行的值。它可以用来在结果集中的当前行之前访问指定列的值。 用法: lag() 函数的语法如下&#xff1a; lag(列名, 偏移量, 默认值) over (partition by 列名1, 列名2, ... order by 列名 [asc|desc], .…