Matlab 时间戳不';平移或缩放时不重置

Matlab 时间戳不';平移或缩放时不重置,matlab,timestamp,matlab-figure,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')); 现在的问题是,当我平移或缩放时,XLabel将无法正确调整:

所以有一件事困扰着我,那就是关于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'));

现在的问题是,当我平移或缩放时,XLabel将无法正确调整:

相反,你看到的是相同的记号标签被回收。。。当然,这又回到了一个事实,即程序按照你的要求去做

我要做的是调用
set(gca,'XTickLabel',datestr(get(gca,'Xtick'),'HH:MM')再次

但我是个懒虫,我不想每次平移和缩放都这样做。我希望它以某种方式被编程到图中

现在figures有一个很棒的东西,叫做
WindowButtonMotionFcn
,我可以从中调用另一个函数:

set(gcf,'WindowButtonMotionFcn', @plot_time_change)

function plot_time_change (gcbo, eventdata, handles)  
set(gca,'XTickLabel',datestr(get(gca,'Xtick'),'HH:MM'));
end
这工作正常,但它在视觉上并不优雅,特别是当我缩放时,它不会被调用


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

设置回拨后操作以缩放到绘图时间更改功能

set(zoom(gca),'ActionPostCallback',@plot_time_change)
有关更多信息,请参见上一个问题