Creating multiple plots from a data file using a for loop
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Anne Reuten
am 10 Jul. 2019
Beantwortet: Shubham Sangle
am 10 Jul. 2019
Hi all,
I am very new to Matlab, and I am trying to plot multiple figures from a dataset using a for loop.
However, it's not working and I don't how to solve it.
The idea is that the loop plots 42 different figures (one for each participant), and that the first figure contains the data from the 1:14 row from columns 3 (x-axis) and column 5 (reaction times), figure 2 should contain the data from the 15:28 row from columns 3 (x-axis) and column 5 (y-axis), etc..
Below is the code that I have used:
Thai_UniversalPictures_Categorization = readtable('Thai_UniversalPictures_Categorization.xlsx'); % This is the table with the data
figure;
hold on;
for i = 1 : 14 : 588(Thai_UniversalPictures_Categorization); % I would like 42 figures
x = Thai_UniversalPictures_Categorization(i:1+13, 3); % The x-axis should contain the picture's names, which are located in the third column of the data file. The i:1+13 was written as an attempt to tell the code it's a loop and that it should take the first 14 pictures' names for the first figure, the next 14 pictures for the second figure etc.
y = Thai_UniversalPictures_Categorization(1:1+13, 5); % The y-axis should contain reaction times , which are located in the fifth column of the data file. The i:1+13 was written as an attempt to tell the code it's a loop and that it should take the first 14 reaction times for the first figure, the next 14 reaction times for the second figure etc.
plot(x,y);
end
I get an error which says:
Error using tabular/plot
Too many input arguments.
Error in outlierplots (line 11)
plot(x,y);
I hope you can follow my explanation and help me.
Best regards, Anne
6 Kommentare
Akzeptierte Antwort
Guillaume
am 10 Jul. 2019
I see you've solved your problem, but for future reference the problem had nothing to do with plot. The problem was with your incorrect use of indexing.
() indexing on a table returns a portion of a table as a table
{} indexing on a table returns a portion of the content of the table as whatever type that content is.
Alternatively, you can use . indexing to get a particular variable of the table, so
plot(sometable(:, somecolumn), sometable(:, someothercolumn))
is never going to work as you are passing tables to plot
plot(sometable{:, somecolumn}, sometable{:, someothercolumn})
or
plot(sometable.nameofsomecolumn, sometable.nameofsomeothercolumn)
is the correct syntax.
Weitere Antworten (2)
Shubham Sangle
am 10 Jul. 2019
You can use this,
() indexing on a table returns a portion of a table as a table
plot(table(:, column1), table(:, column2))
0 Kommentare
Siehe auch
Kategorien
Mehr zu Tables finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!