2013-11-27 4 views
0

Код ниже работает нормально, как есть, однако мне нужно иметь возможность изменить даты начала и окончания любой календарной даты. Таким образом, вместо того, чтобы работать с 2002 года: 2003, я хотел бы, чтобы он работал от «15/Aug/2001» до «14/Aug/2002». Кроме того, я бы хотел, чтобы ось y отображала эти новые даты.Matlab plotting with Dates

Фактическое количество дней между ними не будет таким же, как календарь, а скорее 255 дней (в данном случае), мне нужно будет ввести информацию вручную.

Вроде бы datetick может помочь, но я не могу получить его, чтобы вписаться в рамки ниже:

Я знаю, я уже задал несколько вопросов по этой части кода, но это будет последним!

tchange=(1/(255-1)); 
x = 2002:tchange:2003; % x data 
grad_ = rand(1,length(x))*.3; % graduated stuff 
grad_2 = rand(1,length(x))*.3; 
grad_3= rand(1,length(x))*.3; 
h = subplot(1,3,1); 
%plot(grad_,x); % flip x and y for vertical plot 
herrorbar(grad_,x,grad_2,grad_3,'.'); 
axis(h, [0 0.5 2002 2003]) 
set(h, 'Ytick', x(1):x(end), 'Xtick', 0:.1:.5, 'YDir','reverse', 'YGrid', 'on'); 
xlabel('Gradient Search') 

diff_ = rand(1,length(x)).^2 *.15; % differential stuff 
h = subplot(1,3,2); 
herrorbar(diff_,x,grad_2,grad_3,'.'); 
%plot(diff_,x); 
set(h,'yticklabel',[], 'Ytick', x(1):x(end), 'Xtick', 0:.1:.5, 'YDir','reverse', 'YGrid', 'on'); 
axis(h, [0 0.5 2002 2003]) 
xlabel('Differential Evolution') 

delta_ = rand(1,length(x)).^2 *.2 - .2; % delta stuff 
h = subplot(1,3,3); 
%plot(delta_,x); 
stem(x,delta_median_LP(1:npoints,1),'Marker','.'); 
axis(h, [2002 2003 -.5 .5]) 
set(h,'Xtick', -.5:.5:.5, 'XGrid', 'on'); 
view(90,90); 
ylabel('\Delta of medians') 

ответ

1

Вы должны быть в состоянии использовать datenum функцию MATLAB, в сочетании с функцией datetick. Например, для первого участка, вы можете сделать следующее:

x = datenum(2001,8,15):datenum(2002,8,14); % x data 
grad_ = rand(1,length(x))*.3; % graduated stuff 
grad_2 = rand(1,length(x))*.3; 
grad_3= rand(1,length(x))*.3; 
h = subplot(1,3,1); 
plot(grad_,x); % flip x and y for vertical plot 
% herrorbar(grad_,x,grad_2,grad_3,'.'); 
axis(h, [0 0.5 x(1) x(end)]) 
set(h, 'Xtick', 0:.1:.5, 'YDir','reverse', 'YGrid', 'on'); 
datetick('y',24,'keeplimits'); 
xlabel('Gradient Search') 

я удалить ytick часть команды набора, так что он использует по умолчанию, что не так уж плохо в этом случае, но вы могли бы установите его на все, что захотите.