MATLAB多级分组绘图及图例等细节处理 ; MATLAB画图横轴时间纵轴数值按照不同sensorCode分组画不同sensorCode的曲线

平时研究需要大量的绘图Excel有时候又臃肿且麻烦
尤其是当处理大量数据时可能会拖死Windows

示例代码及数据量展示
在这里插入图片描述
在这里插入图片描述
因为数据量是万级别的折线图也变成"柱状图"了, 不过还能看出大致趋势! 横轴是时间纵轴是传感器数值图例是传感器所在深度

% data = readtable('C:\Users\sdgs\滨大近一个月数据.xlsx')

% 获取所有的depth值
sensorCodes = unique(data.depth);

% 获取所有的时间戳
timestamps = unique(data.id);

% 创建一个图形
figure;
hold on;

% 遍历每个depth
for i = 1:length(sensorCodes)
    code = sensorCodes(i);
    % 创建一个过滤器,只选择当前depth的数据
    filter = data.depth == code;
    
    % 获取当前depth的数据
    codeData = data(filter, :);
    
    % 创建一个向量来存储当前depth的humidity
    humidityValues = zeros(1, length(timestamps));
    
    % 遍历每个时间戳
    for j = 1:length(timestamps)
        timestamp = timestamps(j);
        % 在当前时间戳上获取对应的humidity值
        filter = codeData.id == timestamp;
        humidity = codeData(filter, :).humidity;
        
        % 如果有对应的humidity值,则保存到humidityValues中
        if ~isempty(humidity)
            humidityValues(j) = humidity;
        end
    end
    
    % 绘制曲线
    plot(timestamps, humidityValues, 'DisplayName', ['depth: ' num2str(code)]);
end

xlabel('时间');
ylabel('数值');
legend('show');
title('不同depth的曲线图');

hold off;

代码中都有注释, 可以直接执行也可以往下看
画图横轴时间纵轴数值按照不同sensorCode分组画不同sensorCode的曲线

思路大致就是两次for循环的遍历, 因为要目标值还要进行分组
第一次遍历是要分的组就是代码中的depth ,第二次遍历就是拿到这个depth在对应时间的值

在一开始我们遍历了Excel中的数据, 应该叫读取了更加合适

然后取出相关的值并用unique进行去重

接着就是卡住的地方
用到了过滤器的概念, 对数据过滤后拿过滤玩的数据获取目标值, 然后初始化一个向量长度设置和X轴一致, 这样可以避免越界异常

下标索引必须为正整数类型或逻辑类型。

出错 table/dotParenReference (line 82)
        b = b(rowIndices);

出错 plotLine (line 19)
        time = data.id(idx);

然后开始根据depth, 遍历时间戳如果有值就塞到中间变量中

总结: 外部循环遍历depth内部循环根据时间戳遍历值并用变量做存储!

等到值都有变量存了就可以拿变量进行绘图了
这一步往往会遇到类型的问题,因为plot只能绘制数字类型, 如果数据中有字母活其他字符 , MATLAB会给这个数据加上引号或者其他修饰这样绘图时就会有报错

细节

生成的默认的图例很难分辨, 这时候就要在结果上做文章了

1-设置图例的样子

  • plot(x, y1, '-rO'):绘制以 x 为横轴,y1 为纵轴的曲线,线型为实线(‘-’),颜色为红色(‘r’),标记为圆圈(‘O’)。
  • plot(x, y2, '-kX'):绘制以 x 为横轴,y2 为纵轴的曲线,线型为实线(‘-’),颜色为黑色(‘k’),标记为叉号(‘X’)。
  • plot(x, y3, ':b*'):绘制以 x 为横轴,y3 为纵轴的曲线,线型为点线(‘:’),颜色为蓝色(‘b’),标记为星号(‘*’)。
    在这里插入图片描述

2-设置背景色比较懒就都用上面这一个图了

set(lg1,‘TextColor’,‘red’,‘Color’,‘yellow’);

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue依赖注入,详细解析

Prop 逐级透传问题​ 通常情况下,当我们需要从父组件向子组件传递数据时,会使用 props。想象一下这样的结构:有一些多层级嵌套的组件,形成了一颗巨大的组件树,而某个深层的子组件需要一个较远的祖先组件中的部分数据。…

设计模式 --5观察者模式

观察者模式 观察者模式的优缺点 优点 当一个对象改变的时候 需要同时改变其他对象的相关动作的时候 ,而且它不知道有多少具体的对象需要改变 应该考虑使用观察者模式 。观察者模式的工作就是解除耦合 让耦合双方都依赖与抽象 而不是具体 是的各自改变都不会影响另…

RedHat9中KVM虚拟机的配置与管理

KVM虚拟技术介绍 Linux的KVM(Kernel-based Virtual Machine)虚拟技术是一种基于Linux内核的虚拟化解决方案。它允许在单个物理服务器上创建和运行多个隔离的虚拟机,每个虚拟机都有自己的操作系统和应用程序,就像运行在独立的物理…

互联网轻量级框架整合之JavaEE基础II

编写本篇代码并实际执行之前请仔细阅读前一篇互联网轻量级框架整合之JavaEE基础I Servlet 在Servlet容器中,Servlet是最基础的组件,也可以把JSP当做Servlet,JSP的存在意义只在于方便编写动态页面,使Java语言能和HTML相互结合&…

【数据结构(一)】初识数据结构

❣博主主页: 33的博客❣ ▶文章专栏分类: Java从入门到精通◀ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵关注我带你学更多数据结构知识 目录 1.前言2.集合架构3.时间和空间复杂度3.1算法效率3.2时间复杂度3.2.1大O的渐进…

Docker 安装 | 部署MySQL 8.x 初始设置

1、准备工作 如果不想看前面的废话请直接右边目录跳到 运行容器 处 默认你已经有 docker 环境。 Windows 推荐 Docker Desktop (下载地址)并基于 WSL2 运行 Docker 环境 mac 推荐 Orbstack (下载地址)(这个很节省资源&…

Codeforces Round 836 (Div. 2) D. Range = √Sum

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e18, maxm 4e4 5; c…

Codeforces Round 837 C. Hossam and Trainees 【欧拉筛加速大数素因子分解】

C. Hossam and Trainees 题意 给定一个长度为 n n n 的正整数数组 a a a&#xff0c;问是否能找到两个不同的位置 i , j ( i ≠ j ) i,j(i \neq j) i,j(ij)&#xff0c;使得 a i a_i ai​&#xff0c; a j a_j aj​ 不互质&#xff0c;即 g c d ( a i , a j ) > 1 gc…

算法设计与分析实验报告java实现(排序算法、三壶谜题、交替放置的碟子、带锁的门)

一、 实验目的 1&#xff0e;加深学生对算法设计方法的基本思想、基本步骤、基本方法的理解与掌握&#xff1b; 2&#xff0e;提高学生利用课堂所学知识解决实际问题的能力&#xff1b; 3&#xff0e;提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 1、排序算法…

数据挖掘中的PCA和KMeans:Airbnb房源案例研究

目录 一、PCA简介 二、数据集概览 三、数据预处理步骤 四、PCA申请 五、KMeans 聚类 六、PCA成分分析 七、逆变换 八、质心分析 九、结论 十、深入探究 10.1 第 1 步&#xff1a;确定 PCA 组件的最佳数量 10.2 第 2 步&#xff1a;使用 9 个组件重做 PCA 10.3 解释 PCA 加载和特…

小林coding图解计算机网络|TCP篇06|如何理解TCP面向字节流协议、为什么UDP是面向报文的协议、如何解决TCP的粘包问题?

小林coding网站通道&#xff1a;入口 本篇文章摘抄应付面试的重点内容&#xff0c;详细内容还请移步&#xff1a;小林coding网站通道 文章目录 如何理解UDP 是面向报文的协议如何理解字节流如何解决粘包固定长度的消息 特殊字符作为边界自定义消息结构 如何理解UDP 是面向报文的…

Linux系统中的高级动态链接器技术

Linux系统中的高级动态链接器技术是当今软件开发中不可或缺的一部分。其中&#xff0c;ELF格式&#xff08;Executable and Linkable Format&#xff09;和动态链接库&#xff08;Dynamic Linking Library&#xff09;是两个核心概念。本文将详细介绍Linux系统中的这些技术&…

【数据结构】顺序表的实现——动态分配

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;数据结构 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

从C到C++过渡知识 中(为什么C++支持函数重载,而C不支持函数重载)

感谢大家的阅读&#xff0c;这篇文章我们接着了解C对于C的一些优化。 函数重载 了解C这个特殊用法之前&#xff0c;我们先考虑一个问题&#xff0c;如何交换两个整数。相信大家一定信手捏来&#xff0c;实参传地址而非变量&#xff0c;于是可以写出如下函数。 void Swap(int*…

轻薄本没有独立显卡如何运行stable diffusion

众所周知&#xff0c;Stable Diffusion WebUI 使用 GPU 模式运行。 一&#xff1a;检查自己显卡 打开任务管理器或者winR 输入dxdiag 查看自己显卡状态 很明显一般轻薄本只会带有集显&#xff0c;不能满足stable diffusion要求所以我们可以使用cup来运行stable diffusion 在…

计算机服务器中了halo勒索病毒怎么办,halo勒索病毒解密流程步骤

随着网络技术的不断应用&#xff0c;企业的生产运营得到了快速发展&#xff0c;越来越多的企业开始利用服务器数据库存储企业的重要信息文件&#xff0c;数据库为企业的生产运营提供了极大便利&#xff0c;但网络技术的不断发展也为企业的数据安全带来严重威胁。近日&#xff0…

用于推荐系统的自监督超图Transformer 笔记

1 Title Self-Supervised Hypergraph Transformer for Recommender Systems&#xff08;Lianghao Xia, Chao Huang, Chuxu Zhang&#xff09;【KDD 2022】 2 Conclusion User behavior data in many practical recommendation scenarios is often noisy and exhibits skewed d…

模糊控制对应关系

一. 基本的一些对应关系 1.论域&#xff1a;X&#xff0c;一般来说取得变量∀x∈X 2.隶属函数&#xff1a;μ( x ) 3.误差&#xff1a;e 4.误差变化率&#xff1a;c&#xff0c;这是对误差求导得到的 5.模糊集常用的量&#xff1a; PL/PB&#xff08;Positive Large/Posi…

Leetcode_2两数相加

文章目录 前言一、两数相加1.1 问题描述1.2 解法一&#xff1a;分别将链表转为数字&#xff0c;然后相加1.3 代码实现1.4 解法二&#xff1a;分别将对应位置数字相加1.5 代码实现 二、使用步骤1.引入库2.读入数据 前言 链表是一种物理内存非连续存储&#xff0c;非顺序的线性数…

C++相关概念和易错语法(3)(类的声明和定义、空指针分析、this指针)

1.类的声明和定义 注意类的声明和定义分离的时候&#xff0c;在定义处要使用域作用限定符&#xff0c;否则函数声明链接时的定位不到函数的定义。 这些成员变量、函数的作用于这个类域&#xff0c;将功能集成在一起&#xff0c;这体现出封装的思想。 在区分类的定义和声明时&…