plotting data from multiple sheets by ID and day

2 views (last 30 days)
Hi there,
I have data from multiple sheets of a workbook that I am looking to plot separately by ID (first column) and day (sheet name)
The data to plot from each sheet is column 6 (x) and column 5 (y)
The IDs run 1:48 - so 48 separate tiled plots, and within each plot is (up) to 8 lines (days or sheets - which would be the legend)
I am wondering whether this is possible for separate sheets
So far i have used splitapply to group the data by ID but this still plots all the IDs on one graph - not sure how I can separate this and also include the other sheets
B = findgroups(RLCAD(:,1));
dataByID = splitapply( @(varargin) varargin, RLCAD, B);
[nID, ~]=size(dataByID);
figure;
hold on;
for i=1:1:nID
plot(dataByID{i,6},dataByID{i,14});
end

Accepted Answer

KSSV
KSSV on 20 Feb 2023
Edited: KSSV on 20 Feb 2023
fname = 'https://in.mathworks.com/matlabcentral/answers/uploaded_files/1300500/RLC_AD.xlsx' ;
sheets = sheetnames(fname) ;
h = cell(8,48) ;
figure
for i = 1:length(sheets)
T = readtable(fname,'Sheet',sheets(i)) ;
id = T.(1) ;
F = T.(6) ; % This is x-axes data
Yield = T.(4) ; % This is y-axes data
for j = 1:48
fprintf('%s sheet of %d id\n',sheets(i),j) ;
hold on
h{i,j} = subplot(8,6,j) ;
plot(h{i,j},F(id==j),Yield(id==j))
title(sprintf('id=%d',j))
drawnow
if i == length(sheets)
legend(sheets)
end
end
end
  3 Comments
KSSV
KSSV on 20 Feb 2023
Yes you can do that...edited the answer.

Sign in to comment.

More Answers (1)

Sulaymon Eshkabilov
Sulaymon Eshkabilov on 20 Feb 2023
Here is the complete solution code:
FName = 'RLC_AD.xlsx';
for jj=1:numel(sheetnames(FName))
RLCAD = readmatrix(FName, 'Sheet', num2str(jj));
B = findgroups(RLCAD(:,1));
dataByID = splitapply( @(varargin) varargin, RLCAD, B);
[nID, ~]=size(dataByID);
figure(jj);
for i=1:nID
x = dataByID{i,1}(:,6);
y = dataByID{i,1}(:,5);
plot(x,y); hold all
end
title(['Sheet # ' num2str(jj)])
hold off
end
  1 Comment
Sophia
Sophia on 20 Feb 2023
Hi, thanks for this but I am looking to split the data by ID rather than by sheet
I sampled 48 species and each sheet is a time point so would like to see 48 plots each with a legend - so one plot may have data from each sheet

Sign in to comment.

Categories

Find more on Data Preprocessing in Help Center and File Exchange

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!