Show only amount of n values on a continuous plot

15 views (last 30 days)
I read data from the serial port once a second and give each data point a time. Then I plot this data point(y) over time(x) and create a continuous plot.
Therefore, the plot is countinuously getting longer in x direction the more values are read in and gets unreadable after some time due to the x axis beeing scaled down. Since I don't know when my last x-value will be read in(it should run for days when done), I also cannot set a limit to the x-axis.
To keep it readable and I want to only show the last 10 values but still be able to move the x-axis and see the older points if needed.
Does anyone know how to show just this "window"?

Answers (1)

CAM
CAM on 16 Feb 2023
I presume that you are reading the serial data into a timetable or set of vectors (Time, Data, ...). Instead of plotting the whole table/vector, pull the last 10 entries into a separate variable and update the XData and YData in the line object (as opposed to replotting every time).
p=plot(Time, Data); % Original plot. Creates line object
% <...>
% At each data update
t_plot = Time(end-9:end);
d_plot = Data(end-9:end);
p.XData = t_plot; p.YData = d_plot;
  1 Comment
Christopher
Christopher on 16 Feb 2023
Thank you for the answer!
I update only with the newest value and keep the old data via hold.
With your given code the plot only shows the last 10 values then, the values before are not in the plot anymore as I overwrite them with this.
I want to have all values in the plot, but want to only see the newest 10, without losing the ones before.
Just like an oscillocope does, just with the option to "scroll back" on the x axis as you can do when zoomed in.

Sign in to comment.

Categories

Find more on Line Plots in Help Center and File Exchange

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!