Datenum axes scaling.

Hello, everyone!
I'm writing a GUI containing axes with datestr vector as X data, and it creates a plot with 3 months long ticks. Now, I want to scale it from start_date_num to end_date_num, and, for example, switch my datetick to 1 year if time period is more than 2 years. The problem is that I can't create the new XTick vector that would point exactly on the 1st of January of every year (depends on 365/366 days a year, and on lesser scales - on 28/29Feb, 30/31days a month). The code I tried:
time_period = scale_end - scale_start;
set(axes_handle, 'XTickMode', 'auto');
if time_period > (365*2)
datetick(axes_handle, 'x', 'yy');
set(get(axes_handle, 'XLabel'), 'String', 'Time (year)');
end
set(axes_handle, 'XLim', [start_date_num end_date_num]);
This showed the right picture with Xlabels changed to the needed ones, but still 3 months away from each other.
Any help is appreciated, thank in advance!

 采纳的回答

Walter Roberson
Walter Roberson 2011-11-10

0 个投票

Set explicit XTick yourself instead using automatic mode. It usually isn't fun to figure out "nice" ticks as the user zooms and pans arbitrarily, but it can be done.

1 个评论

"It usually isn't fun to figure out "nice" ticks as the user zooms and pans arbitrarily, but it can be done."
Thank you for the answer, but that's what I meant by "The problem is that I can't create the new XTick vector that would point exactly on the 1st of January of every year (depends on 365/366 days a year, and on lesser scales - on 28/29Feb, 30/31days a month)."
Problem solved by replotting all lines cut, though this solution is not very elegant and needed certain shamanism.

请先登录,再进行评论。

更多回答(0 个)

类别

在 帮助中心 和 File Exchange 中查找有关 Dates and Time 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by