当前位置: 首页 > news >正文

ubuntu20.04系统下,c++图形库Matplot++配置

linux下安装c++图形库Matplot++,使得c++可以可视化编程;安装Matplot++之前,需要先安装一个gnuplot,因为Matplot++是依赖于此库
gnuplot下载链接:
http://www.gnuplot.info/

一、gnuplot下载与安装(可以跳过,下面源码安装,直接apt install gnuplot)

下面==gunplot的安装步骤可以跳过,直接用apt包管理器安装==

step1.进入链接点击Release链接,如下图所示

在这里插入图片描述

step2. 选择tar.gz后缀文件,进行下载:

在这里插入图片描述

step3.下载成功后,cd进入安装包的目录,然后使用tar命令进行解压;
tar -zxvf gnuplot-6.0.1.tar.gz

tar -zxvf 是用于解压 .tar.gz 格式压缩包的常用命令,其中每个参数的含义如下:

  • -z:通过 gzip 进行解压缩。.tar.gz 文件是先用 tar 进行打包,然后用 gzip 压缩的。
  • -x:解压文件(extract)。
  • -v:显示解压过程中的文件列表(verbose)。
  • -f:指定要操作的文件(file)。这个选项需要紧跟在压缩文件名之前。
step4. 解压缩后进入此文件夹
cd gnuplot-6.0.1
step5. 进入文件夹后,做一些依赖配置
sudo apt install qtbase5-dev qtbase5-dev-tools libqt5svg5-dev qttools5-dev-tools

此命令安装一些依赖,包括qt5相关的一些工具,这里如果后面报错,可能是系统还缺乏其他依赖,可以再问下gpt,进行补充安装;

step6 .配置编译选项:
./configure --prefix=/usr/local/gnuplot --with-qt=qt5

其中,--perfix是设置安装路径,--with是设置依赖

step 7. 编译,安装

首先使用make命令进行编译
在这里插入图片描述
这里编译不通过可能是缺少依赖,具体缺少什么,可以自行检查;

然后再安装:

sudo make install
step8. 配置环境变量

配置环境变量:
使用gedit打开.bashrc

sudo gedit ~/.bashrc

在结尾加入下面环境变量设置并保存:

# for gnuplot
export GNUPLOT=/usr/local/gnuplot
export PATH=/usr/local/gnuplot/bin:$PATH
export MANPATH=/usr/local/gnuplot/share/man/man1:$MANPATH

保存后记得刷新一下环境变量设置:

source ~/.bashrc

然后可以用以下命令进行测试:

which gnuplot
gnuplot--version
gnuplot

下面用which,出现路径则说明安装成功。
在这里插入图片描述

二、Matplot++下载配置

下载链接:
https://alandefreitas.github.io/matplotplusplus/
在这里插入图片描述
进入网址,下滑,点击download按钮
download
链接会跳转到github,然后不要选择最新的,而是选择下面的1.2.0版本,因为这个版本有编译后的软件包,安装起来比较方便。
在这里插入图片描述

下载后安装Matplot++

首先,进入下载的目录,进行安装包解压,并进入解压后的文件夹;

tar -xvzf Matplot++-1.2.0-Linux.tar.gz
cd Matplot++-1.2.0-Linux

会有两个文件
在这里插入图片描述
这两个文件内部都是直接已经编译好的,可以直接放到ubuntu的对应系统目录里,编译器便可以识别到。

sudo mv ./include/matplot/  /usr/local/include/
sudo mv ./lib/*   /usr/local/lib/

最后,要进行包含头文件,以及对CmakeList.txt的编写,以管理库依赖,C++包含:

#include "matplot/matplot.h"

这里这个头文件的写法,是因为,默认编译器会搜索到/user/loacal/include这一层,这一层都是文件夹,比如matplot就在这层级,而matplot.h在matplot文件夹下,故要#include "matplot/matplot.h"这样包含。

CMakeLists添加:
重点是以下几个命令的添加。

find package(Matplot++REQUIRED)
if (TARGET Matplot++:matplot)
message(STATUS "**Matplot++found ***")
endif()
target link libraries(${PROJECT NAME}
PUBLIC
Matplot++:matplot)

完整的CMakeLists.txt文件为:

cmake_minimum_required (VERSION 3.10)
project(test)
set(CMAKE_CXX_STANDARD 11)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)find_package(Matplot++ REQUIRED)
if (TARGET Matplot++::matplot)
message(STATUS "**Matplot++found**")
endif()
add_executable(matplottest test.cpp)target_link_libraries(matplottest
PUBLIC
Matplot++::matplot
)

然后,Matplot++的官网有很多示例,可以学习使用;
https://alandefreitas.github.io/matplotplusplus/

在这里插入图片描述

下面是自己的文件结构:
在这里插入图片描述
然后点击左下角的build按钮进行编译,点击左下角的运行按钮,便可以画出图。

在这里插入图片描述

相关文章:

ubuntu20.04系统下,c++图形库Matplot++配置

linux下安装c图形库Matplot,使得c可以可视化编程;安装Matplot之前,需要先安装一个gnuplot,因为Matplot是依赖于此库 gnuplot下载链接: http://www.gnuplot.info/ 一、gnuplot下载与安装(可以跳过,下面源码…...

[激光原理与应用-126]:南京科耐激光-激光焊接 - 焊中无损检测技术 - 智能制程监测系统IPM介绍 - 26- 频域分析法

目录 一、什么是频域分析法 1、定义 2、基本原理 3、分析步骤 4、应用领域 5、优缺点 二、频域分析法在激光焊接故障监测中的应用 2.1 概述 1、应用背景 2、频域分析法的应用 3、应用优势 4、应用实例 2.2 激光焊接故障检测中光电信号的频谱特征 1、光电信号分类…...

深入理解 Solidity 修饰符(Modifier):功能、应用与最佳实践

1. 什么是修饰符(Modifier)? 1.1 修饰符的定义 在 Solidity 中,修饰符(Modifier)是一种用于更改函数行为的关键字。它们可以用于控制函数的执行条件、添加前置检查、简化重复逻辑等。修饰符在函数执行之前…...

YOLO11项目实战1:道路缺陷检测系统设计【Python源码+数据集+运行演示】

一、项目背景 随着城市化进程的加速和交通网络的不断扩展,道路维护成为城市管理中的一个重要环节。道路缺陷(如裂缝、坑洞、路面破损等)不仅影响行车安全,还会增加车辆的磨损和维修成本。传统的道路缺陷检测方法主要依赖人工巡检…...

怎么屏蔽统计系统统计到的虚假ip

屏蔽统计系统中的虚假IP是保护网站分析数据准确性的重要措施。以下是一些有效的策略和步骤,可以帮助您过滤掉虚假IP: 1. 识别虚假IP的特征 了解虚假IP的常见特征可以帮助您识别和屏蔽它们: 短时间内高频率访问:虚假IP可能会在短…...

前端开发设计模式——策略模式

目录 一、策略模式的定义和特点 1.定义: 2.特点: 二、策略模式的实现方式 1.定义策略接口: 2.创建具体策略类: 3.定义上下文类: 三、策略模式的应用场景 1.表单验证场景: 2.动画效果切换场景&…...

SysML案例-潜艇

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>>...

车辆重识别(2020NIPS去噪扩散概率模型)论文阅读2024/9/27

[2] Denoising Diffusion Probabilistic Models 作者:Jonathan Ho Ajay Jain Pieter Abbeel 单位:加州大学伯克利分校 摘要: 我们提出了高质量的图像合成结果使用扩散概率模型,一类潜变量模型从非平衡热力学的考虑启发。我们的最…...

基于深度学习的任务序列中的快速适应

基于深度学习的任务序列中的快速适应是指模型在接连处理不同任务时,能够迅速调整和优化自身以适应新任务的能力。这种能力在动态环境和多任务学习中尤为重要,旨在减少训练时间和资源需求。以下是这一主题的关键要素: 1. 快速适应的背景 动态…...

虚拟机三种网络模式详解

在电脑里开一台虚拟机,是再常见不过的操作了。无论是用虚拟机玩只有旧版本系统能运行的游戏,还是用来学习Linux、跑跑应用程序都是很好的。而这其中,虚拟机网络是绝对绕不过去的。本篇文章通俗易懂的介绍了常见的虚拟网络提供的三种网络链接模…...

[leetcode]674_最长连续递增序列

给定一个未经排序的整数数组&#xff0c;找到最长且 连续递增的子序列&#xff0c;并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r&#xff08;l < r&#xff09;确定&#xff0c;如果对于每个 l < i < r&#xff0c;都有 nums[i] < nums[i 1] &am…...

【无人机设计与技术】四旋翼无人机,UAV仿真,轨迹跟踪PID控制

摘要 本文探讨了四旋翼无人机&#xff08;UAV&#xff09;在轨迹跟踪中的PID控制仿真方法。通过设计三轴方向的PID控制器&#xff0c;调节无人机的姿态与位置&#xff0c;使其能够准确跟踪预设轨迹。本文使用MATLAB/Simulink进行了建模与仿真&#xff0c;验证了PID控制算法在无…...

回归预测|基于卷积神经网络-支持向量机的数据回归预测Matlab程序CNN-SVM 卷积提取特征与原始特征进行融合预测

回归预测|基于卷积神经网络-支持向量机的数据回归预测Matlab程序CNN-SVM 卷积提取特征与原始特征进行融合预测 文章目录 一、基本原理原理流程总结 二、实验结果三、核心代码四、代码获取五、总结 回归预测|基于卷积神经网络-支持向量机的数据回归预测Matlab程序CNN-SVM 卷积提…...

javaScript基础知识汇总

一、基础语法 1、区分大小写&#xff1a;无论是变量、函数名还是操作符&#xff0c;都区分大小写。 2、标识符&#xff1a;就是变量、函数、属性或函数参数的名称。标识符可以由一个或多个字符构成&#xff0c;但需要满足以下条件&#xff1a; 第一个字符必须是一个字母、下…...

《动手学深度学习》笔记2.2——神经网络从基础→进阶 (参数管理-每层的权重/偏置)

目录 0. 前言 正文&#xff1a;参数管理 1. 参数访问 1.1 [目标参数] 1.2 [一次性访问所有参数] 1.3 [从嵌套块收集参数] 2. 参数初始化 2.1 [内置初始化] 2.2 [自定义初始化] 2.3 [参数绑定-共享参数] 3. 小结&#xff08;第2节&#xff09; 4. 延后初始化 (原书第…...

双端之Nginx+Php结合PostgreSQL搭建Wordpress

第一台虚拟机:安装 Nginx 更新系统包列表: sudo apt update安装 Nginx及php扩展: sudo apt install nginx php-fpm php-pgsql php-mysqli -y启动 Nginx 服务: sudo systemctl start nginx检查 Nginx 是否正常运行: xdg-open http://localhost注意:终端命令打开网址 …...

Another redis desktop manager使用说明

Another redis desktop manager使用说明 概述界面介绍图示说明连接界面设置界面查看操作日志主界面信息进入redis-cli控制台更多 概述 Another Redis Desktop Manager是一个开源的跨平台 Redis 客户端&#xff0c;提供了简洁易用的图形用户界面&#xff08;GUI&#xff09;&am…...

【git】配置 Git 的换行符处理和安全性||安装 Ruby

配置 Git 的换行符处理和安全性&#xff1a; git config --global core.autocrlf input&#xff1a;这个设置确保在提交代码时&#xff0c;Git 会将 CRLF&#xff08;Windows 的换行符&#xff09;转换为 LF&#xff08;Unix 的换行符&#xff09;&#xff0c;但在检出代码时不…...

VMware ESXi 8.0U3b macOS Unlocker OEM BIOS 2.7 Dell HPE 定制版 9 月更新发布

VMware ESXi 8.0U3b macOS Unlocker & OEM BIOS 2.7 Dell HPE 定制版 9 月更新发布 VMware ESXi 8.0U3b macOS Unlocker & OEM BIOS 2.7 标准版和厂商定制版 ESXi 8.0U3 标准版&#xff0c;Dell (戴尔)、HPE (慧与)、Lenovo (联想)、IEIT SYSTEMS (浪潮信息)、Cisco …...

Unity 代码裁剪(Strip Engine Code)

文章目录 0.IL2CPP 打包运行闪退问题1.什么是代码裁剪2.为什么要使用代码裁剪3.代码裁剪设置与级别4.强制保留代码4.1 使用[Preserve]标签4.2 使用Link.xml文件 5.Strip中遇到的问题及解决方法6.注意事项 0.IL2CPP 打包运行闪退问题 Google Play要求从2019年8月1日起apk必须支…...

单目3d重建DUSt3R 笔记

目录 DUSt3R 三维重建 报错RecursionError: maximum recursion depth exceeded in comparison 报错 numpy.core.multiarray failed to import 报错Numpy is not available 解决 升级版mast3r 速度变慢 修改了参数设置脚本&#xff1a; 测试效果 操作技巧 DUSt3R 三维重…...

AI驱动TDSQL-C Serverless 数据库技术实战营-与AI的碰撞

目录 一、简介 二、实验介绍 三、结果展示 四、实操指导 4.1 系统设计 4.2 环境搭建&#xff08;手把手教程&#xff09; 4.3 应用构建 4.4 效果展示 4.5 踩坑避雷总结 五、清理资源 5.1 删除TDSQL-C Serverless 5.2 删除 HAI 算力 六、实验总结归纳 一、简介 本…...

C++之String类(上)

片头 嗨&#xff01;好久不见~ 今天我们来学习C的Sting类&#xff0c;不过&#xff0c;在学习它之前&#xff0c;我们先来对STL库有一个简单的了解。 STL&#xff08;standard template library--标准模板库&#xff09;&#xff0c;是C标准库的重要组成部分&#xff0c;不仅是…...

kubernets基础-ingress详细介绍

文章目录 什么是IngressIngress详细说明Ingress示例 Ingress控制器Ingress控制器的工作原理Ingress控制器的特点常见的Ingress控制器 Ingress关联Ingress控制器一、Ingress资源对象二、Ingress控制器三、Ingress与Ingress控制器的关联方式四、注意事项 多实例部署一、Ingress多…...

jenkins部署Maven和NodeJS项目

在 Java 项目开发中&#xff0c;项目的编译、测试、打包等是比较繁琐的&#xff0c;属于重复劳动的工作&#xff0c;浪费人力和时间成本。以往开发项目时&#xff0c;程序员往往需要花较多的精力在引用 jar 包搭建项目环境上&#xff0c;跨部门甚至跨人员之间的项目结构都有可能…...

在unity资源中发现无效引用

本文主要解决在不打开unity的情况下搜索出无效引用的资源的方法 1. 概述 一般只要遍历一下目录里所有资源,判空一下就好了但有些情况下,不希望打开unity, 尤其希望是在资源整合时,想更快验证资源的合法性, 这对合并提交及出包验证时,都要较大的需求 2. 简单的验证方法 简单来…...

C#知识|基于反射和接口实现抽象工厂设计模式

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 01 应用场景 在项目的多数据库支持上、业务的多算法封装、以及各种变化的业务中&#xff1b; 02 抽象工厂组成 抽象工厂包括抽象产品&#xff08;即业务接口&#xff0c;可以通过抽象类或抽象接口设计&#xff09;…...

【分布式微服务云原生】gRPC vs RPC:深入探索远程过程调用的现代与经典

摘要 在分布式系统的世界里&#xff0c;gRPC和RPC是两个耳熟能详的术语&#xff0c;但它们之间有何区别和联系&#xff1f;本文将深入探讨gRPC和RPC的概念、关键特性、以及它们在现代软件开发中的应用。你将了解到gRPC如何作为RPC的一种实现&#xff0c;提供高性能的跨语言远程…...

听说这是MATLAB基础?

MATLAB&#xff08;矩阵实验室&#xff09;是一个强大的高性能计算环境和编程语言&#xff0c;广泛应用于数学计算、算法开发、数据分析、可视化以及模拟等多个领域。以下是MATLAB的一些基础知识&#xff0c;涵盖其功能、语法、基本操作等方面。 1. MATLAB环境 工作区&#xf…...

【CSS/HTML】圣杯布局和双飞翼布局实现两侧宽度固定,中间宽度自适应及其他扩展实现

前沿简介 圣杯布局和双飞翼布局是前端重要的布局方式。两者的功能相同&#xff0c;都是为了实现一个两侧宽度固定&#xff0c;中间宽度自适应的三栏布局。 圣杯布局来源于文章In Search of the Holy Grail,双飞翼布局来源于淘宝UED。 两者的实现方式有差异&#xff0c;但是都…...

化妆品网站建设策略/竞价推广

移动端图片上传方法 实现效果 文件下载 http://files.cnblogs.com/files/sntetwt/%E7%A7%BB%E5%8A%A8%E7%AB%AF%E5%9B%BE%E7%89%87%E4%B8%8A%E4%BC%A0.rar 实现步骤 一、隐藏<input type"file" id"file" name"Filedata" style"display:…...

想自己做网站做推广/网站建设公司地址在哪

C语言允许程序员逐位操作变量&#xff0c;此时&#xff0c;最直观的数字表示方式自然是二进制。不过这样常常会让数字看起来“过长”&#xff0c;例如十进制的 255 使用二进制表示为 11111111&#xff0c;因此&#xff0c;在C语言程序开发中&#xff0c;为了程序员阅读代码的方…...

免费北京网站建设/推广员是干什么的

线性优化之对偶理论 前言—为什么需要对偶 (参见知乎书树小数) 一. 如何转化为对偶 二. 强弱对偶 1. 弱对偶 2. 弱对偶推论 3. 强对偶 cTX bTy 可转化为松弛互补条件 解释&#xff1a;原问题和对偶问题有一个处于“active mode”就行。 4. 原问题和对偶问题的关系 存在与有…...

昆明广告网站制作/崇左seo

目标&#xff1a;&#xff08;五十五&#xff09;中的问题133 从earth文件加载高层图层的过程 待继续分析列表&#xff1a; 9、earth文件中都有哪些options&#xff08;&#xff08;九&#xff09;中问题&#xff09; 10、如何根据earth文件options创建不同的地理信息引擎节…...

做网站公司cnfg/页面关键词优化

头文件其实就是类似<stdio.h>这样的.h文件&#xff0c;和c一样&#xff0c;但需要放在规定目录当中&#xff0c;文件中放置了一些函数声明&#xff0c;变量声明&#xff0c;常数定义&#xff0c;宏的定义等等。当使用#include语句将头文件引用时&#xff0c;就等价于将头…...

做系统和做网站哪个简单一些/seo工程师是什么职业

微信小程序中this指向作用域问题this.setData is not a function报错 在微信小程序中我们一般通过以下方式来修改data中的数据 this.setData({index1: e.detail.value})比如在函数里面修改数据 bindFaChange1: function (e) {this.setData({index1: e.detail.value})}但是当…...