How to add a datetime array to addpoints for an animated line plot?

19 ビュー (過去 30 日間)
Sun
Sun 2019 年 10 月 2 日
コメント済み: Noah Prisament 2023 年 6 月 7 日
Hi,
Let's say I have a datetime & temperature arrays as following:
Xdata Ydata
'05:00:00.048' 41
'05:00:00.052' 42
'05:00:00.056' 40.5
'05:00:00.060' 43
'05:00:00.064' 44
'05:00:00.068' 45
'05:00:00.072' 45.5
'05:00:00.076' 46
'05:00:00.080' 47
'05:00:00.084' 47.5
'05:00:00.088' 48
I would like to plot an animation line using addpoints. "addpoints" needs Xdata to be a double but I need to plot it as a datetime object.
Help me understand if there's another way around this.
Thanks,
Sun

採用された回答

Walter Roberson
Walter Roberson 2019 年 10 月 2 日
Unfortunately, animatedLine only permits double()
There are some obscure circumstances in plotting under which datetime objects will automatically be converted to doubles, but this is not one of those circumstances. :(
  2 件のコメント
Eric Prandovsky
Eric Prandovsky 2023 年 2 月 9 日
編集済み: Eric Prandovsky 2023 年 2 月 9 日
Previous examples show converting to serial date number using datenum
datenum(datetime)
ans = 7.3893e+05
But the datenum documentation says it's no longer recommended, any idea what the new suggested method is?
Noah Prisament
Noah Prisament 2023 年 6 月 7 日
The "animatedline" now supports "datetime" values natively, so this is the new suggested method. This will also show the proper ruler on each axis. See my answer below for example syntax.

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

その他の回答 (2 件)

Ajay Kumar
Ajay Kumar 2019 年 10 月 2 日
Try this:
Convert the datetime values to numbers using datenum.
Fetch these datenum values as x parameter to addpoints.
While plotting convert these datenum values to datetime again using datetime and 'ConvertFrom'.
I hope it works.
  1 件のコメント
Sun
Sun 2019 年 10 月 2 日
編集済み: Walter Roberson 2019 年 10 月 2 日
Kumar,
Thanks for the response. addpoints itself plots the data. I am not able to do addpoints first and then convert the data for sake of a plot.
This is what I used:
h = animatedline('Marker','o');
addpoints(h,Xdata,Ydata);
This is the error: Error using matlab.graphics.animation.AnimatedLine/addpoints Invalid type for argument X. Type should be double.
I can try
Xdata_num = datenum(Xdata);
addpoints(h,Xdata_num,Ydata);
But plotting Xdata_num doesn't help as data constitutes to date which is the same for all time points.

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


Noah Prisament
Noah Prisament 2023 年 6 月 7 日
The "animatedline" now supports all numeric datatypes as well as datetimes and durations for all axes as of R2023a!
In order to plot your data on an "animatedline" you can now utilize the following example:
h = animatedline(NaT, NaN);
addpoints(h, Xdata, Ydata);
or to initialize the "animatedline" with data:
h = animatedline(Xdata, Ydata);

カテゴリ

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

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by