inserting long xtick label

3 ビュー (過去 30 日間)
TESFALEM ALDADA
TESFALEM ALDADA 2020 年 3 月 7 日
編集済み: dpb 2020 年 3 月 8 日
Hi,
I wanted to insert long time series of xticklabel for my plot.
I tried manually using:
set(gca, 'xticklabels' ,{'1/1/1990', '1/2/1990', '3/1/1990', . . . since the date length is long (15 years) i could not type all time series. so what is the short cut to inser this xtick?
Thank you
  2 件のコメント
Star Strider
Star Strider 2020 年 3 月 7 日
See the documentation for plot timeseries.
The other option (if you did not use a datetime array) is to use the datetick function.
TESFALEM ALDADA
TESFALEM ALDADA 2020 年 3 月 8 日
編集済み: dpb 2020 年 3 月 8 日
ok, i am working to plot using the left and right axis where this method is not woking for me.
furthermore it shows error message when i use a set(gca, ...) option to further process,
maybe see below please
yyaxis left
ts1 = timeseries(Qobs,1:4383);
ts1.Name = 'Daily Count';
ts1.TimeInfo.Units = 'days';
ts1.TimeInfo.StartDate = '01-Jan-2000'; % Set start date.
ts1.TimeInfo.Format = 'mmm dd, yy'; % Set format for display on x-axis.
ts1.Time = ts1.Time - ts1.Time(1); % Express time relative to the start date.
hL=plot(X,Qobs, 'g', X,Qsim);
ylabel('Flow (m^3/s)')
xlabel('Daily flow')
% legend('Observed','Simulated')
% hL.FaceColor = [1 0 0];
set(gca,'xtick',1:4383,'ylim', [0,12])
plot(ts1)
yyaxis right
hR=bar(X,P,5, 'k'); %
set(gca,'YColor', 'k','Ydir','reverse','ylim',[0,50],'xlim',[1,4383], 'xtick',1:500:4383)
ylabel('Rainfall (mm)')
xlim([1 4383])

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

採用された回答

dpb
dpb 2020 年 3 月 7 日
編集済み: dpb 2020 年 3 月 8 日
Don't label manually at all; use a datetime variable for the x-axis variable in plot() and you'll get datetime ticklabels automagically.
ADDENDUM:
t=1:4383; t=t.';t=t-t(1); % number days vector
Qobs=randn(size(t)); % dummy data to match
ts1 = timeseries(Qobs,t); % create the ts object
ts1.TimeInfo.Units='days';
ts1.TimeInfo.StartDate='01-Jan-2000';
ts1.TimeInfo.Format='mmmyy'; % bug/implementation issue -- uses datenum() strings internally
plot(ts1)
hAx=gca;
xl=xlim; % retrieve xlimits
xl(2)=xl(2)+days(1); % make RH axis end at 1/1 next year
xlim(xl) % update xlim, now draws last tick label
produced
Finish up as desired.
Not knowing what X is, no way to know what to do about adding a bar plot at this point...
NB: The bug/implementation snafu on the TS date format string. Setting it to 'MMMyy' as is correct for datetime object produced warning/error when tried to plot as
>> plot(ts1)
Error using matlab.internal.datetime.cnv2icudf (line 157)
Unrecognized minute format. Format: MMMyy.
Error in timeseries/plot (line 142)
datetimeTickFormat = matlab.internal.datetime.cnv2icudf(char(h.TimeInfo.Format));
>>
Cap-M is minute field for datenum variables, NOT datetime class which is what the timeseries and new-fangled DatetimeRuler object is for the datetime aware plot functions. In fact, after the plot() line above,
>> hAx.XAxis
ans =
DatetimeRuler with properties:
Limits: [Jan 01, 2000 Jan 01, 2012]
TickValues: [Jan 01, 2000 Jan 01, 2002 Jan 01, 2004 Jan 01, 2006 Jan 01, 2008 Jan 01, 2010 Jan 01, 2012]
TickLabelFormat: 'MMMyy'
Show all properties
>>
shows it was converted.
  1 件のコメント
TESFALEM ALDADA
TESFALEM ALDADA 2020 年 3 月 8 日
i tried this way but it dont works for daily time frames. please can you give me some example, and also i have two axis plot; one using plot function and the other axis has bar plot.
how can i adjust for this.
best

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

その他の回答 (0 件)

カテゴリ

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

Community Treasure Hunt

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

Start Hunting!

Translated by