C++第三方开发库matplotlib-cpp

这篇具有很好参考价值的文章主要介绍了C++第三方开发库matplotlib-cpp。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Matplotlib-cpp是一个用于在C++中绘制图表的开源库。它提供了与Python的Matplotlib库类似的功能,使得在C++环境下进行数据可视化变得更加便捷。基于Matplotlib-cpp,我们可以使用各种绘图函数和样式选项来创建各种类型的图表,包括折线图、散点图、柱状图等。它与C++的语法和数据结构紧密结合,方便了在C++项目中进行图表绘制和数据分析。

1. 安装

下载matplotlib-cpp

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

2. 基本功能

matplotlib-cpp 主要提供了以下几种功能:

  • 基本绘图:matplotlib-cpp 支持许多基本的 2D 图形,包括线图、散点图、条形图、直方图、饼图等。

  • 子图:可以在一个画布上创建多个子图,每个子图可以独立绘制。

  • 颜色、标记和线型:可以自定义每个图形的颜色、标记(数据点的形状)和线型(实线、虚线等)。

  • 图例和标题:可以为每个图形添加图例和标题,以解释图形的含义。

  • 坐标轴设置:可以自定义坐标轴的范围、刻度和标签。

  • 网格线:可以添加网格线,以便于观察数据。

  • 文本和标注:可以在图形上添加文本和标注,以强调特定的数据点或区域。

  • 保存和显示:可以将图形保存为各种格式的文件,或在窗口中直接显示。

3. 示例

#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);
    }

    // 设置输出图像的大小为1200x780像素
    plt::figure_size(1200, 780);
    // 绘制给定x和y数据的折线图,颜色自动选择
    plt::plot(x, y);
    // 绘制给定x和y数据的红色虚线
    plt::plot(x, w, "r--");
    // 绘制一条线,其名称将出现在图例中为"log(x)"
    plt::named_plot("log(x)", x, z);
    // 设置x轴的范围为[0,1000000]
    plt::xlim(0, 1000*1000);
    // 添加图表标题
    plt::title("Sample figure");
    // 启用图例
    plt::legend();
    // 保存图像(文件格式由扩展名确定)
    plt::save("./basic.png");

    return 0;
}

C++第三方开发库matplotlib-cpp,# C++开源库,c++,matplotlib

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

using namespace std;
namespace plt = matplotlibcpp;

int main()
{
    // 准备数据
    int n = 5000; // 数据点个数
    vector<double> x(n),y(n);
    for(int i=0; i<n; ++i) {
        double t = 2*M_PI*i/n;
        x.at(i) = 16*sin(t)*sin(t)*sin(t);
        y.at(i) = 13*cos(t) - 5*cos(2*t) - 2*cos(3*t) - cos(4*t);
    }

    // plot() 函数接受任意数量的 (x, y, format) 三元组
    // x 必须是可迭代的(即提供 begin(x) 和 end(x) 函数),
    // y 可以是可调用的(提供 operator() const 函数)或者可迭代的
    plt::plot(x, y, "r-", x, [](double d) { return 12.5+abs(sin(d)); }, "k-");

    // 显示图表
    plt::show();
}

C++第三方开发库matplotlib-cpp,# C++开源库,c++,matplotlib

#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(); // 应用xkcd风格的绘图
    plt::plot(t, x);
    plt::title("AN ORDINARY SIN WAVE"); // 设置图表标题
    plt::save("xkcd.png"); // 保存图像为"xkcd.png"
}

C++第三方开发库matplotlib-cpp,# C++开源库,c++,matplotlib

#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();
}

C++第三方开发库matplotlib-cpp,# C++开源库,c++,matplotlib

参考文献

C++图表绘制的最佳选择:高效而强大

C++第三方开发库 matplotlib-cpp文章来源地址https://www.toymoban.com/news/detail-608359.html

到了这里,关于C++第三方开发库matplotlib-cpp的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vscode 配置第三方库 opengl 开发

    2024年02月08日
    浏览(53)
  • SpringBoot【开发实用篇】---- 整合第三方技术(缓存)

    企业级应用主要作用是信息处理,当需要读取数据时,由于受限于数据库的访问效率,导致整体系统性能偏低。 应用程序直接与数据库打交道,访问效率低 为了改善上述现象,开发者通常会在应用程序与数据库之间建立一种临时的数据存储机制,该区域中的数据在内存中保

    2024年02月05日
    浏览(53)
  • uniapp原生插件开发调用第三方SDK

    uniapp安卓官方SDK Android 离线SDK - 正式版 | uni小程序SDK 官方uni原生插件开发教程(android)网址: 简介 | uni小程序SDK 第一步,开发环境的准备 下载uniapp安卓官方SDK待后面使用,解压完成如下图所示。 JAVA环境 jdk,打开cmd输入java -version查看自己的jdk版本,官方文档中提示jdk版本应

    2024年02月15日
    浏览(48)
  • 微信开放平台之第三方平台开发,从哪里入手?

    大家好,我是悟空码字 疫情之下,最近有不少兄弟没有挺进决赛,半途成了小羊人,可谓是出师未捷身先死。话说回来,不管怎么样,尽量保护好自己,能越晚变羊越好。 开始说正事,不管是自己在创业或学习也好,还是公司的开发任务也罢,有很多小伙伴在开发多小程序

    2024年02月10日
    浏览(51)
  • iOS 开发-编译第三方库 openssl及curl

    iOS编译库需要三个架构,arm64,arm64e,x86_64,其中x86_64为模拟器所需 iOS编译库需要下载xcode及对应的command line tool(执行命令时可以自动下载),下载失败需要去官网搜索下载 参考iOS如何编译OpenSSL静态库(openssl版本:1.1.1b) 执行配置命令(路径修改为要生成的目标架构文件夹路径

    2024年02月13日
    浏览(36)
  • Android开发:通过Tesseract第三方库实现OCR

    一、引言         什么是 OCR ?OCR(Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。简单地说,OCR是一种技术,该项技术采用光学的

    2024年02月16日
    浏览(62)
  • python内网环境安装第三方包【内网搭建开发环境】

    内网安装第三方包的应用场景,一般是一些需要在没网的环境下进行开发的情况。这些环境一般仅支持本地局域网访问,所以只能在不下载任何第三方包的情况下艰难开发。 将当前应用依赖的第三方包提前下载到本地,拷贝到单机环境下安装,但是不能一个个下载安装,那样

    2024年02月09日
    浏览(43)
  • JAVA开发(基于Restful的微服务第三方简易接口设计)

       一、需求背景 java后端需要提供接口服务,其中接口服务分为对内网的后台管理系统的接口,对外网的用户接口和对第三方系统的接口。这里主要讲对第三方的接口。 二、接口设计 我们可以参考微信小程序的接口,一般一个系统提供给第三方系统的接口都需要接口权限认

    2024年02月09日
    浏览(52)
  • 小程序开发webview组件不跳转第三方网页的问题

    最近开发小程序,想要跳转第三方的网页,使用webview组件,src属性可以直接给到域名,然后进行跳转,但是这个组件对个人类型的小程序时不支持的,开发环境下,不校验合法域名的选项勾选后,是可以进行跳转的,包括真机调试也是没问题的,但是在生产环境上线后就不行

    2024年02月13日
    浏览(53)
  • 微信小程序开发如何开启地图定位(个人开发版)(连接第三方百度地图api)

    目前腾讯位置服务提供路线规划、地图选点、地铁图、城市选择器插件四款插件产品 在微信公众平台 选择开发工具可开启腾讯位置服务 之后便可以在 设置--第三方设置中添加自己所需要的腾讯地图插件 因为我做的小程序中需要用到地图选点功能 但是在安装 地图选点插件

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包