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

ubuntu下C++调用matplotlibcpp进行画图(超详细)

目录

一、换源

二、安装必要的软件

三、下载matplotlibcpp

四、下载anaconda

1.anaconda下载

2.使用anaconda配置环境

五、下载CLion

1.下载解压CLion

2.替换jbr文件夹 

3.安装CLion 

4.激活CLion  

5.CLion汉化

6.Clion配置

六、使用CLion运行

七、总结


我的环境:ubuntu18.04.6 LTS bionic 但是也不要需要一定是这个版本,应该是都可以用的

一、换源

如果你还没有换源,下载速度会非常慢,可以使用下面代码跟着换源

(感谢小鱼大佬提供 他的官网https://fishros.com/)

wget http://fishros.com/install -O fishros && . fishros

二、安装必要的软件

在 Ubuntu 上,你需要安装 python-matplotlib 包,该包包含 matplotlib 库,以及 python3-dev 包,其中包括必要的头文件。可以使用以下命令安装:

sudo apt-get update
sudo apt-get install python-matplotlib python3-dev

如果有yes/no  输入y即可。 

三、下载matplotlibcpp

需要安装matplotlibcpp,下载地址为https://github.com/lava/matplotlib-cpp

ubuntu系统可以直接使用代码安装,如下代码,我这里是直接在home目录下安装的

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

这里使用了github代理下载,国内速度会快一点 

四、下载anaconda

1.anaconda下载

这里下载anaconda会方便一点,如果你自己的环境十分了解,也可以不用下载,我是笨蛋我选择下载,注意选择linux版本,链接:Free Download | Anaconda(anaconda可以配置python环境)

下载好,找到路径执行下面命令(注意要执行你的版本!

bash Anaconda3-2023.09-0-Linux-x86_64.sh

执行后,一直按回车,直到问你yes还是no,选择yes 

问你是否安装在这个目录,建议安装,直接按回车,开始安装(大概5分钟,请耐心等待,等下还有问题,不要乱按)

他现在询问是否anaconda加入环境变量 ,选择yes添加,不然后面很麻烦

输入后,就下载完成了,打开安装好的anaconda目录终端

 下载好了anaconda,打开终端默认的是其base环境,有时并不常用的话会比较麻烦,可以使用如下代码设置默认终端打开时之前的环境

conda config --set auto_activate_base false

使用以下代码进入base环境。(代码知道就好,现在不用操作

conda activate

也可以使用代码退出base环境(代码知道就好,现在不用操作

conda deactivate

2.使用anaconda配置环境

使用下面代码在终端运行(询问y/n  选择y)

conda create --name forcppEnvs python==3.10

这里我们要先选择进入forcppEnvs环境,如下代码

conda activate forcppEnvs

前面会多刚刚我们设置的forcppEnvs环境

添加镜像源方便我们后续下载

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/

 我这里已经安装好了,所以写的already。

进入anaconda/envs/fdrcppEnvs里面运行下面两个代码,安装numpy库和matplotlib库

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpypip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib

图片如下,安装完毕。 

五、下载CLion

1.下载解压CLion

点击下载,注意查看是否为linux CLion Linux

解压文件,先要打开你下载的目录,还要注意后面的CLion是你下载的文件,用tab可以补齐

tar -xzf CLion-2023.2.2.tar.gz

2.替换jbr文件夹 

jetbrains全家桶在Ubuntu中使用会出现输入法不跟随的问题,需要将源文件中的jbr文件夹替换来解决

先在github上下载好别人重新编译过的jbr文件

如果很慢也可以复制链接到windows迅雷下载,在复制到虚拟机中。 

下载好解压,对压缩包右击-》提取到此处,或者之前的命令行解压,解压完毕更名为jbr

复制jbr到clion文件夹中,选择全部合并和替换 

3.安装CLion 

我比较喜欢把他放到home目录,使用下面代码移动到home目录 

mv clion-2023.2.2/ ~
cd ~
cd clion-2023.2.2/bin/
sh clion.sh 

4.激活CLion  

需要激活可以直接买,或者点击试一试。

5.CLion汉化

新建项目进入

装好之后重新点击restart重新启动

这里选择创建桌面条目,方便我们后面打开(不需要每次都sh clion.sh)

6.Clion配置

在设置里面查看

运行如下代码安装C和C++编译器

sudo apt-get updatesudo apt-get install build-essential

六、使用CLion运行

编辑CMakeLists.txt,代码如下  

注意下面代码的路径如“/home/kangkang/anaconda3/envs/forcppEnvs/include/python3.10”kangkang是我自己的用户名,你需要改成自己的,下面代码三个地方都要修改,可以去命令行cd一下,验证路径是否正确。

最后一个地方需要修改的是“add_executable(test main.cpp)”中test是之前“project(test)”的名字,保证跟他一样即可,后面main.cpp是我主函数的名字

cmake_minimum_required(VERSION 3.26)  # 设置cmake最小版本3.26(我们下载的是3.27)
project(test)   # test可以随意设置(是运行的名字)set(CMAKE_CXX_STANDARD 17) #(选择C++17)find_package(PythonLibs REQUIRED)
#下面两句代码路径要改成你自己的
set(PYTHON_INCLUDE_DIRS /home/kangkang/anaconda3/envs/forcppEnvs/include/python3.10)
set(PYTHON_LIBRARIES /home/kangkang/anaconda3/envs/forcppEnvs/lib/libpython3.10.so)
include_directories(${PYTHON_INCLUDE_DIRS})# 添加 Matplotlib 的头文件路径  路径改成你自己的
include_directories(/home/kangkang/matplotlib-cpp/)add_executable(test main.cpp)# 链接 Python 和 Matplotlib 库
target_link_libraries(test ${PYTHON_LIBRARIES})

 main.c代码如下

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

运行结果如下,终于完成啦。 

七、总结

文章有一点长,因为我是小白,找了很多网上的方法才完成。大佬技术很好,因此写得文章并不会那么详细,我这种小白看起来有点吃力,因此我写的尽可能详细一点,如果你遇到了什么问题,可以发到评论区,我会尽我所能帮助你。

可以点个赞吗?谢谢支持!!!


参考文章

Ubuntu下使用c++调用matplotlibcpp绘图

在读学生自学Ubuntu20.04用C++调用matplotlib历程

ubuntu下安装Clion

ubuntu下安装Anaconda3以及使用大全

相关文章:

ubuntu下C++调用matplotlibcpp进行画图(超详细)

目录 一、换源 二、安装必要的软件 三、下载matplotlibcpp 四、下载anaconda 1.anaconda下载 2.使用anaconda配置环境 五、下载CLion 1.下载解压CLion 2.替换jbr文件夹 3.安装CLion 4.激活CLion 5.CLion汉化 6.Clion配置 六、使用CLion运行 七、总结 我的环…...

芯科科技推出新的8位MCU系列产品,扩展其强大的MCU平台

新的BB5系列为简单应用提供更多开发选择 中国,北京 - 2023年11月14日 – 致力于以安全、智能无线连接技术,建立更互联世界的全球领导厂商Silicon Labs(亦称“芯科科技”,NASDAQ:SLAB),今日宣布…...

Flink CDC

1、Flink CDC的介绍: 是一种技术,可以帮助我们实时的捕获数据库中数据的变化,并将这些变化的数据以流的形式传输到其他的系统中进行处理和存储。 2、Flink CDC的搭建: 1、开启mysql的binlog功能: # 1、修改mysql配置…...

数据结构-链表的简单操作代码实现3-LinkedList【Java版】

写在前: 本篇博客主要介绍关于双向链表的一些简答操作实现,其中有有部分代码的实现和前两篇博客中的单向链表是相类似的。例如:查找链表中是否包含关键字key、求链表的长度等。 其余的涉及到prev指向的需要特别注意,区分和单向链表之间的差异…...

JTS: 24 MinimumDiameter 最小矩形

文章目录 版本代码 版本 org.locationtech.jts:jts-core:1.19.0 链接: github 代码 package pers.stu.algorithm;import org.locationtech.jts.algorithm.MinimumDiameter; import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.Geometry; import…...

MacOS Ventura 13 优化配置(ARM架构新手向导)

一、系统配置 1、About My MacBook Pro 2、在当前标签打开新窗口 桌面上创建目录的文件夹,每次新打开一个目录,就会创建一个窗口,这就造成窗口太多,不太好查看和管理,我们可以改成在新标签处打开新目录。需要在&…...

多区域OSPF配置

配置命令步骤: 1.使用router ospf 进程ID编号 启用OSPF路由 2.使用network 直连网络地址 反掩码 area 区域号 将其归于对应区域 注意: 1.进程ID编号可任意(1-65535) 2.反掩码用4个255相减得到 3.area 0 为主干区域 4.连接不…...

【强化学习】day1 强化学习基础、马尔可夫决策过程、表格型方法

写在最前:参加DataWhale十一月组队学习记录 【教程地址】 https://github.com/datawhalechina/joyrl-book https://datawhalechina.github.io/easy-rl/ https://linklearner.com/learn/detail/91 强化学习 强化学习是一种重要的机器学习方法,它使得智能…...

openwrt Docker不能联网

文章参考:docker上网(docker安装openwrt无法上网) - 老白网络 外网不能访问内网是应为防火墙。内网访问外网如下: 清理容器垃圾 docker volume prune -f 创建一个网络 docker network create --subnet172.18.0.0/16 mynet 通过该网络创建gerrit docker run -tid --name ge…...

EtherCAT从站EEPROM组成信息详解(2):字8-15产品标识区

0 工具准备 1.EtherCAT从站EEPROM数据(本文使用DE3E-556步进电机驱动器)1 字8-字15产品标识区 1.1 产品标识区组成规范 对于不同厂家和型号的从站,主站是如何区分它们的呢?这就要提起SII的字8-字15区域存储的产品标识&#xff…...

SpringBoot--中间件技术-4:整合Shiro,Shiro基于会话SessionManager实现分布式认证,附案例含源代码!

SpringBoot整合安全中间件Shiro 技术栈&#xff1a;SpringBootShiro 代码实现 pom文件加坐标 Springboot版本选择2.7.14 &#xff1b;java版本1.8 &#xff1b; shiro做了版本锁定 1.3.2 <properties><java.version>1.8</java.version><!--shiro版本锁定…...

【QT基础入门】QT中的容器类

QT中有多种容器类,它们可以用来存储和操作不同类型的数据。根据容器的特性和用途,可以分为以下几类: 序列容器 这些容器按照一定的顺序存储数据,可以通过下标或迭代器访问。QT中的序列容器有: QList: 这是最通用的序列容器,它在内部实现为一个数组列表,可以快速地在头…...

IDEA没有Add Framework Support解决办法

点击File—>Settings 点击第一个设置快捷键 点击apply和ok即可 我们要点击一下项目&#xff0c;再按快捷键ctrlk 即可...

《009.SpringBoot之汽车租赁系统》

《009.SpringBoot之汽车租赁系统》 项目简介 [1]本系统涉及到的技术主要如下&#xff1a; 推荐环境配置&#xff1a;DEA jdk1.8 Maven MySQL 前后端分离; 后台&#xff1a;SpringBootMybatisPlus; 前台&#xff1a;Layuivue; [2]功能模块展示&#xff1a; 前端门户 1.登录&a…...

第四代智能井盖传感器,万宾科技助力城市安全

在迈向更为智能化、相互联系更为紧密的城市发展过程中&#xff0c;智能创新产品无疑扮演了一种重要的角色。智能井盖传感器作为新型科学技术产物&#xff0c;不仅解决传统井盖管理难的问题&#xff0c;也让城市变得更加安全美好&#xff0c;是城市生命线的一层重要保障。这些平…...

ClickHouse 面试题

文章目录 什么是 ClickHouse&#xff1f;ClickHouse 有哪些应用场景&#xff1f;ClickHouse 列式存储的优点有哪些&#xff1f;ClickHouse 的缺点是是什么&#xff1f;ClickHouse 的架构是怎样的&#xff1f;ClickHouse 的逻辑数据模型&#xff1f;ClickHouse 的核心特性&#…...

Python代码运行速度提升技巧!Python远比你想象中的快~

文章目录 前言一、使用内置函数二、字符串连接 VS join()三、创建列表和字典的方式四、使用 f-Strings五、使用Comprehensions六、附录- Python中的内置函数总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项…...

P6入门:项目初始化11-项目详情之计算Calculations

前言 使用项目详细信息查看和编辑有关所选项目的详细信息&#xff0c;在项目创建完成后&#xff0c;初始化项目是一项非常重要的工作&#xff0c;涉及需要设置的内容包括项目名&#xff0c;ID,责任人&#xff0c;日历&#xff0c;预算&#xff0c;资金&#xff0c;分类码等等&…...

<MySQL> 查询数据进阶操作 -- 联合查询

目录 一、什么是笛卡尔积&#xff1f; 二、什么是联合查询&#xff1f; 三、内连接 3.1 简介 3.2 语法 3.3 更多的表 3.4 操作演示 四、外连接 4.1 简介 4.2 语法 4.3 操作演示 五、自连接 5.1 简介 5.2 自连接非必要不使用 六、子查询(嵌套查询) 6.1 简介 6.…...

centos 6.10 安装 svn1.14.2

安装 apr 和 apr-util 下载地址 我下载的分别是 apr-1.7.4 和 apr-unit-1.6.3 常规的安装步骤 ./configure --prefix/usr/local/xxx make && make install注意要先安装 apr 再安装 apr-unit-1.6.3 安装 lz4 下载地址 要配置好环境变量&#xff0c;不然可能还是找…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...