2012-04-11 3 views
0

В следующем примере я два года на сумму данных, обозначенных 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 лет. Как это можно достичь, учитывая, что мне нужны даты, которые будут показаны вдоль оси xaxis, и возможно только задание месяца (mmm) (не yyyy-mm-dd HH: MM).

ответ

1

Вы пробовали команду datetick для обозначения осей?

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

Это может быть проще, если вы не конвертировать ваши даты в строках даты, а затем преобразовать их обратно в печати.

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'); 
Смежные вопросы