2013-11-27 104 views
0

下面的代碼正常工作,但我需要能夠將開始和結束日期更改爲任何給定的日曆日期。因此,我不希望從2002年開始運行:2003年,我希望它能從'15/Aug/2001'運行到'14/Aug/2002'。另外我想Y軸顯示這些新的日期。Matlab繪製日期

之間的實際天數不會像日曆所說的那樣相同,而是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

您應該能夠使用MATLAB的datenum功能,與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') 

我刪除了set命令的ytick一部分,所以它使用默認值,這是不是在這種情況下,太糟糕了,但你可以將其設置爲任何你想要的。