How to perform a for loop over a single excel column

1 次查看(过去 30 天)
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 个评论
Maaya
Maaya 2019-1-9
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.
Maaya
Maaya 2019-1-9
drange is probably an error on my part. I'm trying to loop through the length of the 3rd column

请先登录,再进行评论。

回答(1 个)

Guillaume
Guillaume 2019-1-9
编辑:Guillaume 2019-1-9
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');

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by