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 件のコメント

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 件)

カテゴリ

ヘルプ センター および 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