Fill area in plot with datetime

11 Ansichten (letzte 30 Tage)
Frank
Frank am 29 Feb. 2016
Beantwortet: Peter Perkins am 7 Nov. 2016
The following simplified example illustrates my problem:
Let
DateStrings = {'2014-01';'2014-02';'2014-03';'2014-04';'2014-05';'2014-06'};
X = datetime(DateStrings,'InputFormat','y-M');
Y = 1:6;
The following works, but is not exactly what I need:
plot(X,Y, 'DatetimeTickFormat','M-yyyy');
What I need is something like this:
area(X,Y, 'DatetimeTickFormat','M-yyyy');
This does not work, because "Input arguments must be numeric".
Does anybody know how to put dates on the x-axis with "area" or fill the area between 0 and Y with plot?

Akzeptierte Antwort

Image Analyst
Image Analyst am 29 Feb. 2016
Don't use X. Just create your cell array DateStrings the way you want it and then do this:
area(1:length(DateStrings),Y);
ax = gca;
ax.XTickLabel = DateStrings;
ax.XTickLabelRotation = -75;
  3 Kommentare
Image Analyst
Image Analyst am 29 Feb. 2016
What's not correct about it? Like I said "Just create your cell array DateStrings the way you want it" <=== Did you do that? Or not?
Frank
Frank am 1 Mär. 2016
Of course, I did that ....... not ;-). Thanks for your answers!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (3)

Peter Perkins
Peter Perkins am 7 Nov. 2016
Frank, if you have access to the most recent release, R2016b, area does now work with datetimes:
area(X,Y);
h = gca; h.XAxis.TickLabelFormat = 'M-yyyy'
The default labels are month name, with year as the "secondary label", so you'd need to set XAxis.TickLabelFormat to get exactly the labels you want. Notice that using XAxis.TickLabelFormat is a bit different than in previous releases. That new property is supported for all datetime plots, and most (maybe even all, I forget) plotting now works with datetimes and durations. DatetimeTickFormat is still supported in the plot function, but moving forward you should use XAxis.TickLabelFormat.
Hope this helps.

Einar
Einar am 3 Nov. 2016
An alternative solution:
area(datenum(X),Y)
datetick('x', 'mm-yyyy')

Frank
Frank am 3 Nov. 2016
So simple! Works perfect! Thank you very much.

Community Treasure Hunt

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

Start Hunting!

Translated by