以下代码可以正常工作,但我需要能够将开始日期和结束日期更改为任何给定的日历日期。因此,不是从2002年到2003年运行,而是希望从2001年8月15日开始运行'到' 14 / Aug / 2002'。另外我希望y轴显示这些新日期。
之间的实际天数与日历不同,而是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')
答案 0 :(得分: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
部分,以便它使用默认值,在这种情况下这不是太糟糕,但您可以将其设置为您想要的任何内容。