plot Datetime on x Axes

조회 수: 37 (최근 30일)
MoHa
MoHa 2020년 3월 9일
댓글: Noah Prisament 2023년 7월 19일
Hello! I have a endless while loop, that generates every 20 min a number. I'm trying to figure out how to plot the data with the dates on the x axis and numbers on the Y.
how can i plot the date and time on x axes?
I'm pretty new to Matlab, would really appreciate any help!

채택된 답변

Benjamin Großmann
Benjamin Großmann 2020년 3월 9일
There are mainly 2 possibilities
  1. You can use datetick() to format your x axis ticks to date or time values
  2. You can define your x-values as datetime() and the plot command automatically formats your x-axis with dateticks
For a mwe, we can assume that we start "now" and are collecting data for 12 hours resutling in a time vector t
t = datetime('now'):minutes(20):datetime('now')+hours(12);
y = rand(size(t));
plot(t, y)
You can also append t with the current time
t = []; % initialization
% ...
% ...
% ...
% every iteration / callback
t(end+1) = datetime('now');
As you are new to matlab, i would also recommend not to use a "endless while loop, that generates every 20 min a number". Have a look at the timer class. With the timer class you can define an instance of the timer which calls a function (schedules) every 20 minutes "in the background". Please let me know if you need help with that.
  댓글 수: 5
Benjamin Großmann
Benjamin Großmann 2020년 3월 9일
You can set the timer interval via the period property of the timer class. See line 9 in my first code snippet.
First, write a function and put everything inside the function which should be evaluated with the specified rate. This is going to be your timerFcn. Please note that a timer fcn (and other callbacks) must have an input argument for the source and event. You can add additional arguments and pass values to those callbacks like i did with the myCloseRequestFcn().
If you want to store data, you can use the UserData of the timer class as I did with the x data, y data and so on.
Then you just have to adapt the definition of the timer instance from my first code snippet.
If you can post a mwe of your problem, than I can try my best to support you with the timer function.
Noah Prisament
Noah Prisament 2023년 7월 19일
The "animatedline" now supports datetimes and durations for all axes as of R2023a!
So, you no longer need to convert your datetimes into a "datevec" which should give your plots a nicer looks with better axes ticks. In order to plot your data on an "animatedline" you can now utilize the following example:
h = animatedline(NaT, NaN);
addpoints(h, Xdata, Ydata);

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Dates and Time에 대해 자세히 알아보기

제품


릴리스

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by