Set specific date ticks

60 ビュー (過去 30 日間)
EM
EM 2017 年 10 月 13 日
回答済み: Med Aymane Ahajjam 2019 年 5 月 14 日
Hi trying to set specific date ticks. I don't understand why the following code does not work
figure()
hold on
box on
plot(date1,series1,'k')
plot(date1,series2,'r--')
xlabel('Date')
ylabel('Price')
DateString = {'06/30/2010';'11/30/2010'};
datenum(DateString);
set(gca, 'XTick', datenum(DateString))
dateFormat = 1;
datetick('x', dateFormat)

採用された回答

Walter Roberson
Walter Roberson 2017 年 10 月 13 日
datetick('x', dateFormat, 'keepticks')
  5 件のコメント
EM
EM 2017 年 10 月 21 日
Hi I'm still receiving an error. Can you help?
Here is the code:
figure()
hold on
box on
plot(date1,series1,'k')
plot(date1,series2,'r--')
xlabel('Date')
ylabel('Price')
DateString = {'06/30/2010';'11/30/2010'};
datenum(DateString);
set(gca, 'XTick', datenum(DateString))
dateFormat = 1;
datetick('x', dateFormat,'keepticks')
Here is the error:
Error using matlab.graphics.axis.decorator.DatetimeRuler/validateTicks Value must be a vector of increasing datetime values.
Error in matlab.graphics.axis.decorator.DatetimeRuler/setTicksDelegate
Walter Roberson
Walter Roberson 2017 年 10 月 21 日
Your date1 appears to be datetime objects, and you appear to be using R2016b or later. In that case you do not use datetick.
figure()
hold on
box on
plot(date1, series1, 'k')
plot(date1, series2, 'r--')
xlabel('Date')
ylabel('Price')
DateString = {'06/30/2010';'11/30/2010'};
ticlocs = datetime(DateString); %R2014b or later
ticlocs.Format = 'dd-MMM-yyyy';
set(gca, 'XTick', ticklocs); %R2016b or later

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

その他の回答 (2 件)

Peter Perkins
Peter Perkins 2017 年 10 月 13 日
編集済み: Walter Roberson 2017 年 10 月 13 日
If you have access to R2016b or later, you will probably be much happier using datetime rather than datenum/datestr, including for plotting:
d = datetime(2015,1,1:500);
x1 = randn(size(d));
plot(d,x1)
ax = gca;
ax.XAxis.TickValues = datetime(2015,1,1)+calquarters(0:6);
ax.XAxis.TickLabelFormat = 'QQQ-yyyy';
  3 件のコメント
Walter Roberson
Walter Roberson 2017 年 10 月 13 日
Yup. For example,
ax.XAxis.TickValues = datetime(2015,1,1)+days([18 143 207 258]);
ax.XAxis.TickLabelFormat = 'MMM dd';
or
ax.XAxis.TickValues = datetime(2015,[1;5;11;14], [17;5;30;19]);
ax.XAxis.TickLabelFormat = 'yy/M/d';
EM
EM 2017 年 10 月 13 日
Thank you Walter, that is very helpful.

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


Med Aymane Ahajjam
Med Aymane Ahajjam 2019 年 5 月 14 日
In order for the TickLabelFormat to work, at least in my case, I had to specify:
ax.XTickLabelMode = 'manual';
ax.XAxis.TickLabelFormat = 'HH:mm:ss';

カテゴリ

Help Center および File ExchangeDates and Time についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by