Matlab:绘制日期时间

news2024/11/15 8:03:51

Matlab:绘制日期时间

  • 绘制日期时间数据
  • 指定坐标区范围
  • 指定刻度值
  • 指定刻度格式
  • 存储日期时间的坐标区属性
  • 导出和转换数据提示值
  • 绘制来自文件的日期时间数据

此示例说明如何使用存储为 datetime 和 duration 数组的日期时间创建线图。datetime 数据类型表示时间点,如 2020 年 8 月 24 日上午 10:50:30,而 duration 数据类型表示时间长度,如 12 小时 30 分钟。大多数绘图函数接受 datetime 和 duration 数组作为 x、y 和 z 坐标,并以适当的日期时间单位显示刻度值。您可以使用 datetime 和 duration 值指定自己的坐标轴范围和刻度值。您还可以更改刻度值的格式,以显示您选择的日期时间单位。数据提示显示绘图中游标位置的 datetime 和 duration 值,您可以将这些值导出到工作区变量中。从电子表格或逗号分隔值 (CSV) 文件中读取数据时,您可以在绘图中包含日期时间数据。

绘制日期时间数据

您可以绘制 datetime 和 duration 数组,而无需将它们转换为数值数组。大多数绘图函数接受 datetime 和 duration 数组作为输入参数。

例如,绘制一个数据集,该数据集在 x 轴上有 datetime 值,在 y 轴上有数值。x 坐标是 2021 年 6 月和 7 月每天的 datetime 值。该绘图自动在 x 轴上以适当的格式显示刻度值。在这种情况下,适当的格式显示月份名称和日期以及年份。

XDates = [datetime(2021,6,1:30) datetime(2021,7,1:31)];
YNumsForXDates = sin(0:0.1:6);
plot(XDates,YNumsForXDates)

在这里插入图片描述
同样,绘制一个在 x 轴上有 duration 值的数据集。要创建一个以秒为单位的 duration 数组,请使用 seconds 函数。

XTimes = seconds(0:120);
YNumsForXTimes = cos(0:0.05:6);
plot(XTimes,YNumsForXTimes)

Figure contains an axes object. The axes object contains an object of type line.

指定坐标区范围

当您更改绘图上的范围时,为 datetime 和 duration 值显示的刻度值会自动更新。您可以通过交互方式或通过调用对应轴的 xlim、ylim 或 zlim 函数来更新范围。将新范围指定为 datetime 或 duration 数组。如果您更改范围以放大或缩小到足够的程度,则刻度值可以显示其他日期时间分量,而不仅仅是新刻度值。

例如,绘制 XDates 和 YNumsForXDates 数组。然后使用 xlim 将 x 轴范围更改为 2021 年 6 月 20 日和 7 月 7 日。该绘图显示新刻度值。

plot(XDates,YNumsForXDates)
xlim([datetime("2021-06-20") datetime("2021-07-07")])

在这里插入图片描述
将 x 轴范围更改为 2021 年 6 月 20 日和 6 月 22 日。刻度值以 hh:mm 格式显示小时和分钟分量,因为该绘图已放大到足以在 x 轴上显示更小的时间单位。

xlim([datetime("2021-06-20") datetime("2021-06-22")])

在这里插入图片描述

指定刻度值

您不必更改坐标区范围来更改刻度值。在这种情况下,您可以使用 xticks、yticks 或 zticks 函数来指定自己的沿 x、y 或 z 轴的刻度值。将刻度值指定为 datetime 或 duration 数组。

例如,绘制 XTimes 和 YNumsForXTimes 数组。然后使用 xticks 指定 0、60 和 120 秒处的刻度值。

plot(XTimes,YNumsForXTimes)
xticks(seconds([0 60 120]))

在这里插入图片描述

指定刻度格式

绘图函数使用默认格式将 datetime 和 duration 值显示为刻度值。要覆盖一个轴上刻度值的格式,请使用 xtickformat、ytickformat 或 ztickformat 函数。

例如,绘制 XDates 和 YNumsForXDates。使用 xtickformat 指定显示年、月和日期的刻度值格式。

plot(XDates,YNumsForXDates)
xtickformat("yyyy-MM-dd")

在这里插入图片描述
您也可以调用带 DatetimeTickFormat 或 DurationTickFormat 名称-值参数的 plot。例如,以下对 plot 函数的调用创建相同的绘图。

plot(XDates,YNumsForXDates,“DatetimeTickFormat”,“yyyy-MM-dd”)

但是,这些名称-值参数只能与 plot 函数结合使用。您可以在调用任何绘图函数(如 scatter、stem 和 stairs)后使用函数(如 xtickformat)。

存储日期时间的坐标区属性

线图中的坐标轴范围、刻度标签的位置以及 datetime 和 duration 数组的 x、y 和 z 值也存储为 Axes 对象的属性。以下属性代表线图的前述内容。

XLim, YLim, ZLim

XTick, YTick, ZTick

XData, YData, ZData

例如,与 XDates 和 YNumsForXDates 的绘图相关联的 XLim 和 XTick 属性存储 datetime 值。获取该绘图的 Axes 对象并显示这些属性。

ax = gca;
ax.XLim

ans = 1x2 datetime
2021-06-01 2021-08-03

ax.XTick

ans = 1x5 datetime
2021-06-01 2021-06-15 2021-06-29 2021-07-13 2021-07-27

导出和转换数据提示值

点击一个绘图时,您会在游标位置创建一个数据提示,显示其 x 和 y 坐标。数据提示显示数值以及 datetime 和 duration 值。但是,当您将游标数据导出到工作区时,系统以数值对形式报告坐标。要将导出的游标数据转换为 datetime 或 duration 值,请使用 num2ruler 函数。

例如,绘制 XDates 和 YNumsForXDates。然后通过点击该绘图创建一个数据提示。
在这里插入图片描述
要将游标数据导出到工作区,请右键点击数据提示并选择将游标数据导出到工作区。此操作将游标数据导出为工作区的一个结构体。

cursor_info =

struct with fields:

   Target: [1×1 Line]
 Position: [25 0.5985]
DataIndex: 26

cursor_info.Position 字段将游标数据表示为数值对。与绘图相关联的 Axes 对象具有将 x 坐标的数值转换为 datetime 值所需的信息。获取绘图的 Axes 对象。然后将数值 x 坐标和 x 轴从 Axes 对象传递给 num2ruler。

ax = gca;
datetimePosition = num2ruler(cursor_info.Position(1),ax.XAxis)

datetimePosition =

datetime

26-Jun-2021
您不需要转换数值 y 坐标,cursor_info.Position(2),因为此绘图中的 y 值是数值。

绘制来自文件的日期时间数据

电子表格和 CSV 文件等数据文件通常将日期时间存储为格式化文本。从这类文件中读入数据时,可以将表示日期时间的文本转换为 datetime 或 duration 数组。然后您可以创建这些数据的绘图。

例如,从示例数据文件 outages.csv 创建一个数据绘图。此 CSV 文件包含六列数据。其中两列包含表示日期时间的文本。

Region,OutageTime,Loss,Customers,RestorationTime,Cause
SouthWest,2002-02-01 12:18,458.9772218,1820159.482,2002-02-07 16:50,winter storm
SouthEast,2003-01-23 00:49,530.1399497,212035.3001,winter storm
SouthEast,2003-02-07 21:15,289.4035493,142938.6282,2003-02-17 08:14,winter storm

从 CSV 文件中读取数据的推荐方法是使用 readtable 函数。此函数从文件中读取数据,并以表的形式将它返回。

在 outages.csv 中进行读取。readtable 函数自动将 OutageTime 和 RestorationTime 列中的文本转换为 datetime 数组。表示数值的列(Loss 和 Customers)作为数值数组读入。其余的列作为字符串读入。该表将 outages.csv 中的数据列存储在同名的表变量中。最后,使用 sortrows 函数,按照 OutageTime 中的日期时间对 T 中的行进行排序。如果表没有按时间排序,则最好在绘制或分析数据之前按时间对其排序。

T = readtable("outages.csv","TextType","string");
T = sortrows(T,"OutageTime")

T=1468×6 table
Region OutageTime Loss Customers RestorationTime Cause
___________ ________________ ______ __________ ________________ __________________

"SouthWest"    2002-02-01 12:18    458.98    1.8202e+06    2002-02-07 16:50    "winter storm"    
"MidWest"      2002-03-05 17:53    96.563    2.8666e+05    2002-03-10 14:41    "wind"            
"MidWest"      2002-03-16 06:18    186.44    2.1275e+05    2002-03-18 23:23    "severe storm"    
"MidWest"      2002-03-26 01:59    388.04    5.6422e+05    2002-03-28 19:55    "winter storm"    
"MidWest"      2002-04-20 16:46     23141           NaN                 NaT    "unknown"         
"SouthWest"    2002-05-08 20:34    50.732         34481    2002-05-08 22:21    "thunder storm"   
"MidWest"      2002-05-18 11:04    1389.1    1.3447e+05    2002-05-21 01:22    "unknown"         
"NorthEast"    2002-05-20 10:57    9116.6    2.4983e+06    2002-05-21 15:22    "unknown"         
"SouthEast"    2002-05-27 09:44    237.28    1.7101e+05    2002-05-27 16:19    "wind"            
"SouthEast"    2002-06-02 16:11         0             0    2002-06-05 05:55    "energy emergency"
"West"         2002-06-06 19:28    311.86           NaN    2002-06-07 00:51    "equipment fault" 
"SouthEast"    2002-06-17 23:01    42.542         39877    2002-06-17 23:49    "thunder storm"   
"MidWest"      2002-07-01 04:33    203.94         60650    2002-07-02 14:54    "severe storm"    
"MidWest"      2002-07-01 08:18    100.71    1.8116e+05    2002-07-01 11:33    "severe storm"    
"MidWest"      2002-07-10 01:49    168.02           NaN    2002-07-10 17:20    "equipment fault" 
"SouthEast"    2002-07-14 21:32     90.83         60133    2002-07-14 23:53    "thunder storm"   
  ⋮

您可以使用圆点表示法来访问表变量,通过名称引用表变量。使用圆点表示法,您可以像对待数组一样对待表变量。

绘制电力损失对停电时间的图。要从表中访问这些变量,请使用圆点表示法。

plot(T.OutageTime,T.Loss)

在这里插入图片描述
计算停电的持续时间,并绘制持续时间对 OutageTime 的图。要计算持续时间,请从 RestorationTime 中减去 OutageTime。结果 OutageDuration 是一个 duration 数组,因为用 datetime 值进行算术运算会产生时间长度作为输出。其中一些停电持续时间很长,因此使用 ytickformat 将 y 轴刻度值的格式从小时更改为年。一些停电持续数年,这表明文件中可能存在一些有问题的数据值。根据您计划如何分析数据,您可以通过某种方式重新处理数据,或删除包含错误值的行。

OutageDuration = T.RestorationTime - T.OutageTime;
plot(T.OutageTime,OutageDuration)
ytickformat("y")

在这里插入图片描述
该博文为原创文章,未经博主同意不得转。
本文章博客地址:https://cplusplus.blog.csdn.net/article/details/127901815

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

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

相关文章

Linux I/O 原理和 Zero-copy 技术全面分析

两万字长文从虚拟内存、I/O 缓冲区,用户态&内核态以及 I/O 模式等等知识点全面而又详尽地剖析 Linux 系统的 I/O 底层原理,分析了 Linux 传统的 I/O 模式的弊端,进而引入 Linux Zero-copy 零拷贝技术的介绍和原理解析,将零拷贝…

项目终于收尾了,第一次体验到专业项目管理软件的魅力

转眼到了年底,我跟进的项目也到了收尾阶段。之前陆陆续续给大家分享了入职新公司后,使用新引进的项目管理软件做项目的一些体会和心得,其中一些比较高效便捷的技巧和功能模块也引起了大家的兴趣。 最近刚好临近项目尾声,也给大家…

Maven的详解

在java中Maven就是一个包管理工具,在没有包管理工具时,我们要做一个java项目,需要第三方依赖包,将别人打包好的Jar包下载到本地,然后手动指定给项目.操作比较麻烦,比如版本控制,有的甚至还有其他包的依赖,属实是繁琐,技术是不断地迭代的,所以就出现了Maven,用了Maven之后,需要什…

安装nodejs的详细流程保姆级(踩了无数次坑)

node 简述: node的使用已经是前端选手基本的选择,其强大的功能甚至到了要和后端抢活干的地步,同时想要搭建个人的博客用node工具也是非常方便的,作为一名后端选上,刚开始准备下载node的时候是因为想要去搭建个人的博客,但是下载之后,使用npm install命令的时候一直报错,无奈找…

G1D14fraudgitpipenvdf操作APT论文RCE37-40服务器搭建

一、fraud 突然发现电脑上还没有python编译器,xswl,快装一下 (一)git操作 (二)git中分支的作用 (三)虚拟环境 1、pip install后的包一般放在哪里 lib/site-packages下 真的是欸&a…

LiveData

LiveData是一个抽象类,那么我们从简单的MutableLiiveData开始剖析,先看源码 源码太简洁了,就是继承LiveData,然后重写了父类的方法,并且没有多余的操作,都是直接使用父类方法里的逻辑,那我们就根…

安全防护的原则

电力行业 工控安全解决思路保障框架从电力行业对工控安全需求看,电力企业在主要是以合规性建设为主,在 2004 年原电监会 5 号令颁布开始,大部 分的电厂控制系统安全 建设已经按照 5 号令的要求进行了整改,形成“安全分区、网络专…

数电笔记总结(三)(逻辑门电路)

目录逻辑门基础逻辑门电路分立元件基本逻辑门电路TTL集成门电路(与非门)两种特殊门(重点)1.集电极开路门(OC门)2.三态门电路逻辑门基础 逻辑门电路 门电路:具有控制信号通过或不通过能力的电路…

某某桥的检测和加固设计

目录 某某大桥桥梁检测及加固设计报告 1 0 总论 2 0.1 检测目的 2 0.2 桥梁结构混凝土强度检测[1] 2 0.3 结构综合评定指标 4 0.4桥梁承载能力[3] 4 0.5 桥梁结构荷载试验 6 0.6 主要结果与结论 8 1某某大桥简介 11 1.1某某大桥简介 11 1.2 检测仪器与设备 15 2 外观检查与检测…

【跟学C++】C++STL标准模板库——算法整理(上)(Study18)

文章目录1、STL简介2、STL算法分类及常用函数2.1、非变序算法2.1.1 计数算法(2个)2.1.2 搜索算法(7个)2.1.3 比较算法(2个)3、总结 【说明】 大家好,本专栏主要是跟学C内容,自己学习了这位博主【 AI菌】的【C21天养成计划】,讲的十分清晰&am…

每个程序员都要知道的一个网站

在日常开发过程中,你是不是经常回到搜索引擎,搜索某个功能的实现方式,比如:Javascript 数组排序、正则表达式等等。 今天给大家推荐的这个网站,就可以满足大家的需求,它叫:30secondsofcode&…

抽象类与接口

目录 1. 抽象类 1.1 抽象类概念 1. 2🐔抽象类特性 1.3 抽象类的作用 2. 接口 2.1 接口是什么 2.2 语法规则 2.3 方法的使用 2.4 接口特性 2.5 实现接口 VS 继承类 2.6 抽象类 VS 接口(总结) 2.6 接口间的继承 🐓 随着…

漫画脸头像怎么制作?这几种方法可以帮到你

你们会经常更换头像吗?我身边就有一些朋友会这样做,看到喜欢的头像就换,而且他基本上都是找那些漫画脸来当头像。那如果我们把自己的人像制作成漫画脸,就不容易跟别人撞头像了,还显得有个性。 估计有很多小伙伴不知道漫…

NXP BootLoader源码分析并改写SD卡启动

1 官方资料 NXP官方提供了MCUBoot SDK:NXP_Kinetis_Bootloader_2.0.0 package,里面包含了各种型号芯片的的BootLoader。 BootLoader参考手册:doc/Kinetis Bootloader v2.0.0 Reference Manual.pdf上位机程序参考手册:Kinetis Fl…

疯狂小杨哥被王海打假

我是卢松松,点点上面的头像,欢迎关注我哦! 知名打假人王海 发布视频,说疯狂小杨哥三只羊直播间售卖的金正破壁机和绞肉机虚标功率。破壁机标注功率为300W,实际为105W,绞肉机标注功率300W,实际功…

[附源码]java毕业设计咖啡销售管理系统-

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

总线仲裁的方式

总线仲裁的基本概念 同一时刻只能有一个设备控制总线传输操作,可以有一个或多个设备从总线接收数据。 将总线上所连接的各类设备按其对总线有无控制功能分为: 主设备:获得总线控制权的设备。 从设备:被主设备访问的设备&#xff0…

C++11标准模板(STL)- 算法(std::stable_partition)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 将元素分为两组&#xff0…

内网的基本构造

内网的基本构造 内网也就是常说的局域网(Local Area Network,简称LAN)&#xff0c;是由两个或两个以上相连的计算机组成&#xff0c;局域网是包含在较小区域内的网络&#xff0c;覆盖范围一般是方圆几千米之内&#xff0c;通常位于建筑物内。家庭WiFi网络和小型企业网络是常见…

一次GC暂停时间过长的排查与优化

告警 GC日志分析 日志 2022-11-17T14:28:40.3150800: 1956232.826: [GC (Allocation Failure) 2022-11-17T14:28:40.3150800: 1956232.826: [ParNew: 1576103K->2817K(1769472K), 0.0241066 secs] 4197176K->2624616K(5046272K), 0.0243910 secs] [Times: user0.04 sys…