PLOT ACTION IN TIME LAPS

6 views (last 30 days)
hello, i have a dataset with home activities, i need a way to represent the action like in the picture. When the action is running, in this time laps i have 1 as value. when the action isn't running, the time laps represented by 0 as value; but i don't find a solution to rappresent my dataset as in the picture. I've made three different tables where data is organized in different way, tryng to find a solution. Thanks, i'm new in matlab.

Accepted Answer

Duncan Po
Duncan Po on 18 Feb 2021
Your data is best represented as a timetable in MATLAB. You can then use stackedplot to generate the visualization.
haa = readtimetable('Home_actionAll.csv');
haa = haa(:,{'Bed_to_Toilet_begin', 'Leave_Home_begin', 'Sleep_begin'}); % the begin variables seem to already capture the information, throw away the rest
haa = varfun(@(x)x>0, haa); % normalize to 0s and 1s
haa.Properties.VariableNames = {'Bed_to_Toilet', 'Leave_Home', 'Sleep'}; % fix the variable names
haa.Properties.VariableContinuity = {'step', 'step', 'step'}; % set continuity such that stairs plots are plotted
sp = stackedplot(haa);
Zooming in shows the stairs better:
  1 Comment
Emanuele De Astis
Emanuele De Astis on 19 Feb 2021
wow, that's fine thanks, in a week i tried a lot of things.
you know a way to eliminated the small steps, like eliminated the action with a duration less than 2 minutes?
i've found this code
MMRT=readtable(Home_ActionAll.csv)
C=(MMRT.Date1(MMRT.Leave_Home==1));
D=(MMRT.Date1(MMRT.Leave_Home==2));
Home=array2table(CD);
Home.Properties.VariableNames([1 2])={'Start' 'End'};
Home.Duration=Home.End-Home.Start;
Home=sortrows(Home);
Home.ID(:)=(2)
Home.Duration1=datenum(Home.Duration);
Home(Home.Duration1<0.001,:)=[];
but with table "Home" I can't get that representation you showed me

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by