How to perform a for loop over a single excel column

I'm trying to change the color my scatter plot points depending on a 3rd column with a for loop that would iterate over the column. Here is my code:
data=xlsread('datafile.xlsx');
x = data(:,2);
y = data(:,3);
z = data(:,4);
for k = drange(length(z))
if z(k) == -2
c = [1,0,0];
sz = 100;
else
c = [0,1,0];
sz = 10;
end
end
scatter(x,y,sz,c, 'filled')
Any help?

4 Commenti

Luna
Luna il 9 Gen 2019
Modificato: Luna il 9 Gen 2019
Could you please share your datafile.xlsx? What you are expecting from the code?
Also what is drange? I'm assuming it's a function otherwise the for k is pointless.
I can't share data file due to the nature of the data/source project, but it's organized into three columns. The first two columns are coordinates which I would plot, and the third column would change the color of the point (for example, if the value is -3 then the code would make that particular point larger and the color red). The values in the third column are either 1,0, -1,-2,-3. If it doesn't match a value, then the point would stay a smaller size and green.
drange is probably an error on my part. I'm trying to loop through the length of the 3rd column

Accedi per commentare.

Risposte (1)

Guillaume
Guillaume il 9 Gen 2019
Modificato: Guillaume il 9 Gen 2019
I don't see the point of a loop. Simply use your 3rd column to construct a Nx3 matrix of colours:
colours = [1, 0, 0 ... -3
0, 0, 1 ... -2
0.5 0.5 1 ... -1
0, 1, 0 ... 0
0.2 .4 .6]; % 1
sizes = [100 ... -3
50 ... -2
20 ... -1
10 ... 0
5]; % 1
data = xlsread('datafile.xlsx')
rowindex = data(:, 4) + 4; %rescale from -3...1 to 1...5. For more generic code, use the 2nd output of ismember
rowsize = sizes(rowindex);
rowcolour = colours(rowindex, :);
scatter(data(:, 2), data(:, 3), rowsize, rowcolour, 'filled');

Categorie

Scopri di più su Loops and Conditional Statements in Centro assistenza e File Exchange

Richiesto:

il 9 Gen 2019

Modificato:

il 9 Gen 2019

Community Treasure Hunt

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

Start Hunting!

Translated by