Datenum axes scaling.

4 次查看(过去 30 天)
Antony
Antony 2011-11-10
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
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 个评论
Antony
Antony 2011-11-11
"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 个)

类别

Help CenterFile Exchange 中查找有关 Surface and Mesh Plots 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by