フィルターのクリア

Properly put date labels with OuterPosition and datetick

4 ビュー (過去 30 日間)
giannit
giannit 2020 年 4 月 29 日
編集済み: giannit 2020 年 4 月 29 日
I'm trying to change labels on x axis to be from 24/2/2020 to today (actually, at least 1 day after today, otherwise the curve will touch the y axis on the right). I have to use subplot since I have other plots, and I have to use OuterPosition (or similar?) since the figure contains also annotations.
The following code
subplot(3,2,1)
past = datenum('02-24-2020');
present = datenum(datetime('today')+1); % +1 so that curve won't touch y axis on right
plot(linspace(past,present,65), 1:65)
set(gca, 'OuterPosition',[.1 .1 .4 .3], 'XLim',[past present])
datetick('x','dd/mm','keepticks')
produces this
which is not correct, since it cuts data on both on left and on right. The result doesn't change by removing the subplot command.
Even if I remove the OuterPosition option from set, the result doesn't change.
If i remove both subplot and OuterPosition, the result improves a bit, but it is still wrong
How to properly set the x labels?
This is my matlab version

採用された回答

Mehmed Saad
Mehmed Saad 2020 年 4 月 29 日
編集済み: Mehmed Saad 2020 年 4 月 29 日
You can define xtick and xticklabel by yourself
subplot(3,2,1)
past = datenum('02-24-2020');
present = datenum(datetime('today')+1); % +1 so that curve won't touch y axis on right
plot(linspace(past,present,65), 1:65)
Suppose i want 5 ticks between past and present
tick_pos = linspace(past,present,5);
Set xtick property equal to tick_pos. and for xticklabels convert tick_pos to datestr and then to cell.
set(gca, 'OuterPosition',[.1 .1 .4 .3],'XLim',[past present],...
'XTick',tick_pos,'XTickLabel',cellstr(datestr(tick_pos,'dd/mm')))
  1 件のコメント
giannit
giannit 2020 年 4 月 29 日
編集済み: giannit 2020 年 4 月 29 日
Thank you very much! The curve still touches the y axis though, to correct it we have to use 'today' in the linspace for the plot, and keep 'today+1' elsewhere, right?
Moreover, is it possible to place 'today' as last label, while keeping the curve far from the y axis, i.e. while keeping XLim(2) = 'today+1' ?
EDIT: got it!
subplot(3,2,1)
past = datenum('02-24-2020');
pres0 = datenum(datetime('today'));
pres1 = datenum(datetime('today')+1);
plot(linspace(past,pres0,65), 1:65)
tick_pos = linspace(past,pres0,5);
set(gca, 'OuterPosition',[.1 .1 .4 .3],'XLim',[past pres1],...
'XTick',tick_pos,'XTickLabel',cellstr(datestr(tick_pos,'dd/mm')))

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeAxis Labels についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by