平移或缩放时,时间戳不会重置

时间:2014-03-26 16:19:03

标签: matlab timestamp matlab-figure

令我烦恼的一件事是关于MATLAB的数据是时间戳是正确呈现的挑战。

例如

time = now:1/24/3600:now+1;
xval  = sin((time-time(1)).^2*2*pi) + cos(2*(time-time(1)).^4*2*pi);
plot(time, xval)
set(gca, 'XTickLabel', datestr(get(gca,'Xtick'),'HH:MM'));

enter image description here

现在问题是我平移或缩放时xlabels无法正常调整:

enter image description here

相反,你看到的是相同的刻度标签被回收...这当然回到了这个程序完成了你告诉它做的事情....

我要做的就是再次致电set(gca, 'XTickLabel', datestr(get(gca,'Xtick'),'HH:MM')); ......

但我懒得屁股,每次平移和缩放时我都不想这样做。我想以某种方式在图中编程。

现在数字有一个名为WindowButtonMotionFcn的奇妙的东西,我可以从中调用另一个函数:

set(gcf,'WindowButtonMotionFcn', @plot_time_change)

function plot_time_change (gcbo, eventdata, handles)  
set(gca,'XTickLabel',datestr(get(gca,'Xtick'),'HH:MM'));
end

这样可以正常工作,但视觉上并不优雅,特别是考虑到缩放时它不会被调用。

所以问题是:我有没有更好的解决方案?

1 个答案:

答案 0 :(得分:0)

设置后置回调操作以缩放到plot_time_change函数

set(zoom(gca),'ActionPostCallback',@plot_time_change)

请参阅this上一个问题了解更多