coloring points based on value

조회 수: 10 (최근 30일)
mukesh bisht
mukesh bisht 2021년 5월 19일
댓글: KSSV 2021년 5월 19일
I have x & y coordinates of points. Also each point has one of the two values (2,4). I want my point to be blue if value is 2 otherwise red. The way i am doing is taking too much time. Please suggest faster way
for z = 1:N_s
l = length(P{z});
a = 1;
while a <= l
x = P{z}(a,1); y = P{z}(a,2);
figure(1)
p_s = S{z}(a,1);
if p_s == 2
plot(x,y,'.', 'Color', colorstring(1)); hold on
else
plot(x,y,'.', 'Color', colorstring(2)); hold on
end
a = a + 1;
end
axis equal; hold on
end

답변 (1개)

KSSV
KSSV 2021년 5월 19일
You need not to use a loop. You can achieve this by getting the required indices and plotting. Check the beow demo example:
x = 1:10 ;
y = rand(size(x)) ;
% get values less than 0.5
idx = y<0.5 ;
% plot
figure
hold on
plot(x(idx),y(idx),'.b')
plot(x(~idx),y(~idx),'.r')
  댓글 수: 2
mukesh bisht
mukesh bisht 2021년 5월 19일
But in my case color is not based on its x or y value. Each point has a value (2 or 4) in addition to x & y coordinates. Color should be based on the value 2/4
KSSV
KSSV 2021년 5월 19일
That is not a problem......you can use index for the value and plot x,y. Let x,y,val be your values.
idx = val==2 ;
figure
hold on
plot(x(idx),y(idx),'.r')
plot(x(~idx),y(~idx),'.b')
Also have a look on the function gscatter. You can use this function as well.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Annotations에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by