时间相关的图指横坐标是时间或者日期,作图需要先掌握两点:
1.matlab中与时间、日期相关的函数
2.以时间为坐标轴作图需要注意的事项
matlab中与时间、日期相关的函数
- 本文作图时会用到的函数:
datenum
:从0000年(公元0年)到给定时间的天数,返回值为double型,详情使用help datenum
查看。
- 一些相关的函数:
datestr
:日期数字转换为字符串
clock
:获取当前日期和时间的数值
now
:前时间至0000年的天数
以时间为坐标轴作图需要注意的事项
matlab似乎不能直接以时间字符串作为x轴来作图(我不确定,不过我没有找到能行的方法),既然不能直接用字符串,那就要想办法将时间字符串转换为数值型,方法就是使用datenum
函数。
例如有如下数据:
% data.txt
2017/6/6 1
2017/6/7 2
2017/6/8 3
2017/6/9 4
2017/6/10 5
2017/6/15 6
2017/6/25 7
2017/7/13 8
读取后直接作图:
% 错误代码 matlab2014
alldata = importdata('data.txt');
x = alldata.textdata;
y = alldata.data;
plot(x, y);
会出现如下错误:
错误使用 plot
Invalid first data argument
故做如下修改:
% 正确代码
clc; clear;
alldata = importdata('data.txt');
x = alldata.textdata;
xnum = datenum(x); % 将日期转为数值
y = alldata.data;
plot(xnum, y);
datetick('x', 26); % 将坐标轴设置为日期格式
所以,要作为时间为坐标轴的图,大体思路就是会将时间转换为数值型,画图,再将坐标轴的设置为时间格式。
关于excel
想起了exel,在我的excel 2013中作如下图:
有看出什么问题吗?对,它的横坐标是等间隔显示的,但是实际数据明明不是等间隔的!不知道是不是有什么特殊的设置方法可以让它正确显示。不过如果横坐标是时间倒是正确的:
参考: