【MATLAB第11期】#源码分享 |时间序列数据绘图,横坐标更改为时间轴 横坐标轴参数更改 日期间隔设置 日期标签或格式更改

绘图问题解决方案

在这里插入图片描述
修改前
在这里插入图片描述
修改后

1、导入数据方式(识别时间数据)

我们知道xlsread函数无法导入时间数据,会自动删除时间数据
导入时间数据,一般需要学习以下几个函数:
(1)importdata函数
(2)readtable函数
(3)其他方法(如双击EXCEL数据,直接界面导入对应格式数据)

2、案例展示

本次展示的是readtable函数,即把double数据转化为table表格数据。

(1)打开数据

T = readtable('data.xlsx');  %打开data数据

在这里插入图片描述

readtable有个缺点是导入的数据标题会系统默认。
进阶学习可以了解detectImportOptions函数,可以人工修改标题。

(2)定义时间和数据

data=table2array(T(:,2));
time=table2array(T(:,1));

需要将table数据转为double数据 ,需要用table2array函数。时间数据自动转化为datetime时间格式
在这里插入图片描述

(3)将时间数据转化为数值

x = datenum(time) ;

在这里插入图片描述

datenum函数很关键 。一般绘图,横坐标为转化后的数值,纵坐标为对应数据

(4)绘图

datetick('x','yyyy-mm-dd');%  这里可以替换 datetick('x', 20); 

时间格式yyyy-mm-dd自己定义,如年月可以为’yyyy-mm’
加上小时的话 ,可以私下学习一下datetick函数~

  set(gca,'XTick',x(1:1:size(x,1)))

这里是设置横坐标的间隔,可以防止时间太多,横坐标装不下去。 所以可以设置对应间隔,如1:5:N

set(gca,'XTickLabel',datestr(x(1:1:size(x,1)),'yyyy-mm-dd')  )

这里是设置横坐标时间的标签,与上面相同,间隔保持一致。
绘图代码如下:

figure()
  plot(x,data,'-ob','LineWidth',0.5); %
   datetick('x', 'yyyy-mm-dd');%  这里可以替换 datetick('x', 20); 
   set(gca,'XTick',x(1:1:size(x,1)))
   set(gca,'XTickLabel',datestr(x(1:1:size(x,1)),'yyyy-mm-dd')  )
  grid on
axis tight;
 xlabel("日期")
ylabel("值")
title("绘图结果 ")

完整代码

clc,clear;
% importdata
%opts = detectImportOptions('data.xlsx')
%opts.VariableNames=[{ '时间'} ,{'数量'}]
T = readtable('data.xlsx');
data=table2array(T(:,2));
time=table2array(T(:,1));
x = datenum(time) ;
%new_x=x(1):x(end);
 
figure()
  plot(x,data,'-ob','LineWidth',0.5);
   datetick('x', 'yyyy-mm-dd');
   set(gca,'XTick',x(1:1:size(x,1)))
   set(gca,'XTickLabel',datestr(x(1:1:size(x,1)),'yyyy-mm-dd')  )
  grid on
axis tight;
 xlabel("日期")
ylabel("值")
title("绘图结果 ")
  • 10
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随风飘摇的土木狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值