学习QCustomPlot【3】库结构

news2024/12/23 18:56:22

文章目录

  • 一、前言
  • 二、库结构
  • 三、图层
    • 3.1、坐标轴层

一、前言

学习一个陌生的库,我们首先要明确它有什么用,可以结合库官方examples,学习怎么简单的用。

但是如果要对该库有一个全面的认识,还是需要了解它的开发思路和库结构。

例如:在学习QWT时,首先明确它是基于图形视图框架思路进行开发的,然后明白视图坐标系的组成,图元的继承关系等等


二、库结构

我们从官网下载的QCustomPlot文件夹如下所示:

在这里插入图片描述
打开【documentation】–> 【html】–> 【index.html】

在这里插入图片描述
在这里插入图片描述
切换到【Class Overview】,可以看到两张图:

在这里插入图片描述
第一张是:类关系图表

在这里插入图片描述

  • QCustomPlot是一个图表:包含一个或多个图层、一个或多个item(例如文本、线段等)、一个或多个可以绘制的元素、一个布局;
  • QCPLayer是一个图层:包含基本的元素(QCPLayerable);
  • QCPAbstractItem标识图元虚基类;
  • QCPAbstractPlottable数据展示图元虚基类;
  • QCPLayoutGrid是一个网格布局,可以插入QCPLayoutElement元素(文本元素 QCPTextElement、坐标轴矩形 QCPAxisRect

第二张是:类继承树

在这里插入图片描述

在一个QCustomPlot类图中,最重要且用的最多的是QCPLayerable元素,几乎除了QCPLayer以外的元素都是继承自该类;

  • QCPAbstractPlottable数据展示图元,包含:QCPGraph(折线图)、QCPCurve(曲线图)、QCPBars(柱状图)、QCPStatiBox(盒子图)、QCPColorMap(色谱图)、QCPFinancial(金融图);
  • QCPAbstractItem标识图元,包含:直线(QCPItemStraightLine)、线段(QCPItemLine)、曲线(QCPItemCurve)、矩形(QCPItemRect)、椭圆(QCPItemEllipse)、文本(QCPItemText)、小圆球(QCPItemTracer)、图片(QCPItemPixmap)、括弧(QCPItemBracket);
  • QCPLayoutElement:布局项;
  • QCPGrid:网格线,每一个坐标轴对应一个网格线;
  • QCPAxis:坐标轴,一个坐标轴矩形包含四个坐标轴,上下左右四个坐标轴;

三、图层

QCustomPlot2.0.0beta版本以后,新增了分层绘制机制。所谓分层绘制就是把一张图分几张图来绘制,最后在把这分开的几张图统一绘制到一张图上,比如一张图A,需要分开成3张图B、C和D来绘制,当图A需要重新绘制时,我们一次判断B、C和D是否需要重新绘制,如果不需要绘制的我们直接把图贴到A上,那就很大的减少了重新绘制的时间,而这部分时间其实是没有必要花费的。

QCustomPlot是一个图表,管理着所有的图层,它默认自带了六个图层,分别是:

  • 背景层:background,绘制背景图;
  • 网格层:grid,绘制网格线,每一个坐标轴对应一个网格对象;
  • 绘图层:main,绘制图表;
  • 坐标轴层:axes,绘制坐标轴;
  • 图例层:legend,绘制图例;
  • overlay层:overlay,绘制最上层的东西,鼠标选择矩形框在此层绘制;
mLayers.append(new QCPLayer(this, QLatin1String("background")));
mLayers.append(new QCPLayer(this, QLatin1String("grid")));
mLayers.append(new QCPLayer(this, QLatin1String("main")));
mLayers.append(new QCPLayer(this, QLatin1String("axes")));
mLayers.append(new QCPLayer(this, QLatin1String("legend")));
mLayers.append(new QCPLayer(this, QLatin1String("overlay")));

上述六个层,唯一值得重点介绍的应该是坐标轴层,因为后期绘图,主要就是和坐标轴打交道;


3.1、坐标轴层

坐标轴类零件命名规范
轴类零件命名规范
定义轴几何形状的间距和填充的概述
在这里插入图片描述
左边的灰色虚线表示QCustomPlot小部件边框

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

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

相关文章

2、计算机视觉之图像分类算法基础(笔记)

什么是图像分类? 识别图像所表示内容的任务称为图像分类。我们可以对图像分类模型进行训练以识别各类图像。例如,您可以训练模型来识别表示三种不同类型动物的照片:兔子、仓鼠和狗。 下面几个神经网络重点关注准确率的问题 上图只是训练方式…

java—for结构

for循环语句1.1循环结构循环结构的组成:初始化语句条件判断语句循环体语句条件控制语句循环结构对应的语法:初始化语句条件判断语句循环体语句条件控制语句1.2for循环语句格式//格式 for (初始化语句;条件判断语句;条件控制语句){ 循环体语句; }执行流程…

记录每日LeetCode 环形链表II Java实现

题目描述: 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环&#xf…

06_PyTorch 模型训练[学习率与优化器基类]

当数据、模型和损失函数确定,任务的数学模型就已经确定,接着就要选择一个合适 的优化器(Optimizer)对该模型进行优化。 PyTorch 中所有的优化器(如:optim.Adadelta、optim.SGD、optim.RMSprop 等)均是 Optimizer 的子类,Optimizer…

STM32串口收发、串口中断、串口波特率的理解、普通IO模拟串口

STM32串口收发、串口中断一 、串口中断二、使用DMA三、串口波特率的理解开发环境:stm32cubuMax Keil5一 、串口中断 1.当收到消息的时候,立即进入控制程序,实现通过串口控制硬件; 2.在stm32cubeMax中配置串口 配置全局中断 2.在main函数中…

Django项目搭建_修改目录结构

1.安装环境 使用conda下载Django项目需要的依赖 pip install django2.2.6 -i https://pypi.douban.com/simple/pip install djangorestframework -i https://pypi.douban.com/simple/pip install PymySQL -i https://pypi.douban.com/simple/pip install Pillow -i https://p…

CSDN为什么会发展社区?看看官方怎么说

文章目录🌟 课前小差🌟 23年可兼收名利?🌟 博客之星🌟 红包活动🌟 相聚线下🌟 妙笔生花🌟 原力计划🌟 个人定位🌟 为什么要发展社区?&#x1f31f…

100种思维模型之决策树思维模型-004

选择决定了现状和未来,在生活中有很多选择的机会,但是真的选择对了吗?在该读书的年纪,却想着长大真好。在该工作奋斗的年纪,却后悔自己年轻时没好好读书,而悔恨。其实不是我们没有选择的权利,而…

2023年情人节浪漫表白神器(附源码下载)

2023年情人节将要来临,作为一名程序猿也不要落后了,快来用代码展示你的爱吧!下面给大家准备了6款情人节表白神器,把说不出口的话,放到代码里送给你爱的人吧!祝大家表白成功,俘获美人心&#xff…

Spring Boot集成 Swagger2 展现在线接口文档

一:swagger是什么? Swagger是一款RESTFUL接口的文档在线自动生成功能测试功能软件。Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。目标是使客户端和文件系统作为服务器以同样的速度来更新文件的方法,参数和模型紧…

浅析云边端协同框架下的“AI+”视频融合能力以及场景应用

随着边缘侧与终端侧业务的规模化落地部署,很多新的业务场景已经逐渐不满足于中心化的云端计算模式。尤其是在AI人工智能技术进一步落地应用的趋势下,基于云边端深度融合与协同的“AI”模式,在满足用户对视频服务的智能识别需求上,…

centos环境docker安装nexus3搭建maven私有仓库

拉取最新nexus3镜像docker pull nexus3创建宿主机上的映射文件目录,并授权[root1-0002 ~]# mkdir -p /mnt/lckj/nexus/data [root1-0002 ~]# chmod -R 777 /mnt/lckj/nexus/data运行redis,生成相应容器-d 后台启动[root1-0002 ~]# docker run -d --name …

Go并发读取string的Panic问题

上问题,先看下panic的函数栈信息,说现实strings.Count()发生了panic,来看下函数 第一个参数是字符串s,再结合函数栈信息的十六进制,0x0、0x9表示字符串s的地址和长度 这里来看一下string的底层数据结构:…

Spring Security OAuth2.0认证授权

目录 1.基本概念 1.1什么是认证 1.2什么是会话? 1.2什么是授权 1.3授权的数据模型 1.4.1基于角色的访问控制 1.4.2基于资源的访问控制 2.基于Session的认证方式 2.1认证流程 分布式系统认证方案 什么事分布式系统? 分布式认证需求 分布式认证…

行业安全解决方案 | 能源行业如何在新时期建设新安全?

伴随5G、人工智能、大数据、云计算等新技术的蓬勃发展,数智化成为传统电力能源转型发展的重要方向。与此同时,伴随着能源行业数字技术与电力技术、业务生产的愈发深度的融合,新时期的能源行业网络安全形势有了新变化,网络边界威胁…

DPDK实现的用户态协议栈(UDP)

DPDK实现的用户态协议栈背景NIC与DPDK的比较环境配置Windowe下配置静态IP表代码实现总结背景 DPDK接管NIC之后,接收到的数据都是原始数据,要实现一个协议栈就必须解析协议包和打包协议包,DPDK提供了丰富的API可以使用。 以UDP协议为例&#…

redis分布式集群

文章目录一、redis持久化1.1.RDB持久化1.1.1.执行时机1.1.2.RDB原理1.1.3.小结1.2.AOF持久化1.2.1.AOF原理1.2.2.AOF配置1.2.3.AOF文件重写1.2.4.小结1.3.RDB与AOF对比二、Redis主从集群2.1.集群结构2.2.准备实例和配置2.3.启动2.4.开启主从关系2.5.测试2.6.主从数据同步原理2.…

MMLAB学习笔记-DAY1

一、机器学习 1.机器学习的典型范式 监督学习:数据是由人工标注的,数据之间存在某种映射关系,目的是让机器学习到数据和标签之间的关系无监督学习:数据是没有标签的,通过对数据分析,运用聚类等方法探索出…

六、循环语句

一、while循环 1.语法 while 条件:条件成⽴重复执⾏的代码1条件成⽴重复执⾏的代码2.....2.应用 #偶数累加 i 1 resualt 0while i<100:if i % 2 0:resualt ii1print(resualt)3.break和continue 说明&#xff1a; 举例&#xff1a;⼀共吃5个苹果&#xff0c;吃完第⼀个&…

如何又快又好实现 Catalog 系统搜索能力?火山引擎 DataLeap 这样做

摘要 DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品&#xff0c;帮助用户快速完成数据集成、开发、运维、治理、资产、安全等全套数据中台建设&#xff0c;降低工作成本和数据维护成本、挖掘数据价值、为企业决策提供数据支撑。 火山引擎 DataLeap 的 Data…