Using plot with dates stored in a cell array

10 vues (au cours des 30 derniers jours)
Askic V
Askic V le 6 Mai 2022
Commenté : Askic V le 6 Mai 2022
Hello Matlab experts,
I need your help plotting a price of some item on different days.
I have a cell array called dates with dates stored as strings (actually char) in the follwoing format: '1/22/20'
I also have an array of double with prices called prices. Lengths of these two arrays are of course identical. Now, I would like to plot the prices on different dates (as bars). If I use datetime, the date is converted to the year 0020. So,how to use plot function to plot dates on x axis and prices on y axis? Thank you very much.
>> class (dates{1})
ans =
char
>> datetime(dates{1})
ans =
22-Jan-0020
>> dates{1}
ans =
1/22/20

Réponse acceptée

Star Strider
Star Strider le 6 Mai 2022
I get a different result —
i = 1;
dates{i} = '1/22/20';
dtv = datetime(dates{i}, 'InputFormat','MM/dd/yy')
dtv = datetime
22-Jan-2020
That appears to be correct.
This should lalso work in recent versions of MATLAB. See Date and Time from String Array for details.
.

Plus de réponses (2)

Voss
Voss le 6 Mai 2022
Here's one way to add 2000 to the years
dates = {'1/22/20','1/23/20','1/24/20','1/25/20'};
new_dates = datetime(regexprep(dates,'\d+$','${sprintf(''%d'',str2double($0)+2000)}'))
new_dates = 1×4 datetime array
22-Jan-2020 23-Jan-2020 24-Jan-2020 25-Jan-2020
Then you can use them in plot or bar or whatever.
prices = [100 101 98 94];
bar(new_dates,prices)
hold on
plot(new_dates,prices,'-ro','LineWidth',2)

Askic V
Askic V le 6 Mai 2022
Thank you, I didn't know how to call datetime function properly. 'InputFormat','MM/dd/yy' is the answer I was looking for.
dates =
1×5 cell array
{'1/21/20'} {'1/22/20'} {'1/23/20'} {'1/24/20'} {'1/25/20'}
>> datetime(dates)
ans =
1×5 datetime array
21-Jan-0020 22-Jan-0020 23-Jan-0020 24-Jan-0020 25-Jan-0020
>> dtv = datetime(dates, 'InputFormat','MM/dd/yy')
dtv =
1×5 datetime array
21-Jan-2020 22-Jan-2020 23-Jan-2020 24-Jan-2020 25-Jan-2020
  2 commentaires
Voss
Voss le 6 Mai 2022
Well, that's certainly easier than my solution!
Askic V
Askic V le 6 Mai 2022
Yes, but your solution is really very creative.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Dates and Time dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by