xlim function error. i have seen on video, the codes were working but with me it is not working

5 Ansichten (letzte 30 Tage)
**My codes are below. I get that error: "Error using xlim (line 31) Limits must be a 2-element vector of increasing numeric values."
Also xtickformat function gives me eror. Can you help me? Thanks**
clc; clear; close all;
dates=datetime(2025,8,17)+calmonths(2:11)+calweeks(0:9)
xlim(datetime([2025 2026],[11 5],[12 23]))
xtickformat('dd-MMM-yyyy')

Akzeptierte Antwort

dpb
dpb am 29 Jun. 2021
You're trying to set axis limits on a numeric axes with datetime values -- no can do...
dates=datetime(2025,8,17)+calmonths(2:11)+calweeks(0:9); % create your date vector
figure % make new figure so is clean
xlim(datetime([2025 2026],[11 5],[12 23])) % try your operation
xtickformat('dd-MMM-yyyy')
Error using xlim (line 31)
Limits must be a 2-element vector of increasing numeric values.
>>
And, as you saw, boom! Because the default axes created is numeric -- and xlim isn't strong enough to change them to a DatetimeRuler object on its own.
>> plot(dates,randn(size(dates))) % plot a datetime object first
>> xlim(datetime([2025 2026],[11 5],[12 23])) % now you can set the limits as wanted
>>
MORAL: Always make sure you've got the right type of axes object first -- with datetime, need to have put some data on the axes first with plot() or other higher-level function to create the proper type.
  6 Kommentare
Yusuf Suer Erdem
Yusuf Suer Erdem am 2 Jul. 2021
Check my codes please, they are working pretty fine.
history=datetime(2019,08,1)+caldays(0:10);
y=randi([11,21],1,11);
stem(history,y,'filled');
tarihBaslangic=datetime(2019,08,1);
tarihBitis=datetime(2019,08,8);
xlim([tarihBaslangic tarihBitis])

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Steven Lord
Steven Lord am 29 Jun. 2021
I would expect to see that error if you'd plotted with non-datetime data as your X data. If for example you'd plotted these points:
x = 1:10;
y = x.^2;
plot(x, y)
How much of that plot would you expect to see if I set the X limits from last Thursday to next Saturday?
T = datetime('today');
lastThursday = dateshift(T, 'dayofweek', 'Thursday', 'previous')
lastThursday = datetime
24-Jun-2021
nextSaturday = dateshift(T, 'dayofweek', 'Saturday', 'next')
nextSaturday = datetime
03-Jul-2021
plot(x, y)
xlim([lastThursday, nextSaturday]);
Error using xlim (line 31)
Limits must be a 2-element vector of increasing numeric values.
You haven't specified what error message you received when you tried calling xtickformat but I'm guessing the root cause is the same: you can't change numbers on the X axis into dates and times.

Kategorien

Mehr zu Specifying Target for Graphics Output finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by