Color for points in scatter plot based on quadrants

1 view (last 30 days)
matrix=load('Data');
x = matrix(:,1);
y = matrix(:,2);
matrix(x>0 & y>0,3) = 1;
matrix(x<0 & y>0,3) = 2;
matrix(x<0 & y<0,3) = 3;
matrix(x>0 & y<0,3) = 4;
if x<-128 or x>128 or y<-128 or y>128
'Error:Value exceeds limit'
end
if matrix(:,3)==1 or matrix(:,3)==3
scatter(x,y,'.r')
elseif matrix(:,3)==2 or matrix(:,3)==4
scatter(x,y,'.b')
end
title('Variables and Their Quadrants')
xlabel('X Values')
ylabel('Y Values')
So here's my problem: what I need to do is have any points in quadrants 1 and 3 to be red and any points in quadrants 2 and 4 to be blue. I am using a third row to determine the quadrant, but when I plug that row into a if statement, the script pretends it does not exist. How do I fix this problem?

Accepted Answer

Kelly Kearney
Kelly Kearney on 4 May 2015
You actually have several syntax errors in that script, but they're never being reached because of the way you've structured your if statements.
An if-statement evaluated on a vector only executes if all values in that vector are true. So, for example, when you write
if x < -128
it's the same as
if all(x < -128)
Because that statement is false, the rest of the line isn't evaluated (which is why you don't immediately get an error, since the rest of the statement isn't valid command). You should use any instead.
To get what you want, simply pass the third column as your color data, and set the colormap accordingly:
matrix = randn(50,2);
x = matrix(:,1);
y = matrix(:,2);
matrix(x>0 & y>0,3) = 1;
matrix(x<0 & y>0,3) = 2;
matrix(x<0 & y<0,3) = 3;
matrix(x>0 & y<0,3) = 4;
if any(x < -128 | x > 128 | y < -128 | y > 128)
error('Value exceeds limit');
end
scatter(x,y,[],matrix(:,3),'filled');
colormap([1 0 0; 0 0 1; 1 0 0; 0 0 1]);
set(gca, 'clim', [0.5 4.5]);
title('Variables and Their Quadrants')
xlabel('X Values')
ylabel('Y Values')

More Answers (0)

Categories

Find more on Colormaps in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!