Hello,
I'm trying to plot data in a table after grouping it. If possible, I'd like to avoid using for loops with repeated 'plot' calls, since I think it would be slow. See below for an example of what I'm trying to do. Is there a way to make this code more efficient (e.g., avoid using for loops, or make a single 'plot' call)?
Thank you,
Abed
tbl = table([1;1;1;2;2;2;2;3;3],[0;1;4;0;2;3;5;1;4],rand(9,1),'VariableNames',{'id','t','x'});
uniqueIDs = unique(tbl.id);
figure;
hold on;
for iID = 1:length(uniqueIDs)
t = tbl.t(tbl.id==uniqueIDs(iID));
x = tbl.x(tbl.id==uniqueIDs(iID));
plot(t,x);
end

 Réponse acceptée

Adam Danz
Adam Danz le 3 Jan 2020
Modifié(e) : Adam Danz le 6 Jan 2020
arrayfun() is one way to do that.
tbl = table([1;1;1;2;2;2;2;3;3],[0;1;4;0;2;3;5;1;4],rand(9,1),'VariableNames',{'id','t','x'});
figure();
hold on
arrayfun(@(i)plot(tbl.t(tbl.id==i),tbl.x(tbl.id==i)),unique(tbl.id)) % do plotting

2 commentaires

Abed Alnaif
Abed Alnaif le 6 Jan 2020
Hi Adam,
Thanks for your answer.
Abed
Adam Danz
Adam Danz le 7 Jan 2020
Glad I could help!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Line Plots dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by