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区域存储的产品标识ÿ…...

SpringBoot--中间件技术-4:整合Shiro,Shiro基于会话SessionManager实现分布式认证,附案例含源代码!
SpringBoot整合安全中间件Shiro 技术栈:SpringBootShiro 代码实现 pom文件加坐标 Springboot版本选择2.7.14 ;java版本1.8 ; 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即可 我们要点击一下项目,再按快捷键ctrlk 即可...

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

第四代智能井盖传感器,万宾科技助力城市安全
在迈向更为智能化、相互联系更为紧密的城市发展过程中,智能创新产品无疑扮演了一种重要的角色。智能井盖传感器作为新型科学技术产物,不仅解决传统井盖管理难的问题,也让城市变得更加安全美好,是城市生命线的一层重要保障。这些平…...
ClickHouse 面试题
文章目录 什么是 ClickHouse?ClickHouse 有哪些应用场景?ClickHouse 列式存储的优点有哪些?ClickHouse 的缺点是是什么?ClickHouse 的架构是怎样的?ClickHouse 的逻辑数据模型?ClickHouse 的核心特性&#…...

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

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

<MySQL> 查询数据进阶操作 -- 联合查询
目录 一、什么是笛卡尔积? 二、什么是联合查询? 三、内连接 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 下载地址 要配置好环境变量,不然可能还是找…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...

消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...