情节延续数年

时间:2012-04-11 08:41:15

标签: matlab plot

在下面的示例中,我有两年的数据,由data_2007和data_2008表示,它们具有相应的日期数组:

clear all
DateTime_2007 = datestr(datenum('2007-01-01 00:00','yyyy-mm-dd HH:MM'):1/24:...
    datenum('2007-12-31 23:57','yyyy-mm-dd HH:MM'),...
    'yyyy-mm-dd HH:MM');
DateTime_2007 = cellstr(DateTime_2007);

DateTime_2008 = datestr(datenum('2008-01-01 00:00','yyyy-mm-dd HH:MM'):1/24:...
    datenum('2008-12-31 23:57','yyyy-mm-dd HH:MM'),...
    'yyyy-mm-dd HH:MM');
DateTime_2008 = cellstr(DateTime_2008);

data_2007 =  1 + (20-1).*rand(8760,1);
data_2008 = 1 + (20-1).*rand(8784,1);

我想在一张图上绘制数据,显示数据在2年内的变化情况,所以基本上是一个超过2年的情节。考虑到我需要在x轴上显示日期,并且可能只给出月份名称(mmm)(不是yyyy-mm-dd HH:MM),如何实现这一点。

2 个答案:

答案 0 :(得分:1)

使用datetick。您的日期应该是datenum:

DateTime_2008 = datenum('2008-01-01 00:00','yyyy-mm-dd HH:MM'):1/24:...
datenum('2008-12-31 23:57','yyyy-mm-dd HH:MM');

您可以将其绘制成:

plot([DateTime_2007 DateTime_2008], [data_2007; data_2008]);
datetick('x');

如果您想要一个不同的刻度格式,请尝试:

datetick('x', 'yyyy-mm');

如果您想自己选择刻度线的位置(要实际指定刻度线,您可能需要使用set(gca, 'XTick', ...),请参阅axes properties):

datetick('x', 'keepticks');

答案 1 :(得分:1)

您是否尝试过datetick命令来标记轴?

plot(datenum(DateTime_2007),data_2007)
hold on
plot(datenum(DateTime_2008),data_2008,'g')
datetick('x','mmm')

如果你没有将日期转换为日期字符串,然后必须将它们转换回来进行绘图,这可能会更容易。