2014-11-05 2 views
0

동일한 길이의 벡터 세 개가 있습니다 : x, ycls입니다. x와 y의 2D 플롯을 만들고 싶지만 각 포인트는 cls의 값에 해당하는 색상을 가져야합니다.값에 따라 색상이있는 Matlab에서 2D scatter plot을 만드는 방법은 무엇입니까?

나는 scatter 함수를 사용하는 것에 대해 생각했지만 특정 요소가 아니라 전체 플롯의 색상을 변경할 수 있습니다. 어떤 아이디어? 분산의 도움에서

enter image description here

답변

2

:

산란 (X, Y,을 cls이 세 값의 요소가있는 경우

나는,이 예에서 뭔가를 좀하고 싶습니다 c) 원 색상을 지정합니다. 같은 색으로 모든 원을 그려 보려면 c를 단일 색 문자열 또는 RGB 삼중 항으로 지정하십시오. 다양한 색상을 사용하려면 c를 벡터 또는 RGB 삼중 열의 3 열 행렬로 지정하십시오.

당신이 만들 수 그러나, 나는 배경을 수행하는 방법을 잘 모릅니다

c=zeros(size(x),3); 
c(cls==1,:)=[1 0 0]; % 1 is red 
% ... 
scatter(x,y,1,c) 

으로 다. 데이터를 분류하기 위해 일부 기계 학습 알고리즘을 적용 했습니까? 어쩌면 당신은 방정식을 배경으로부터 구할 수 있지만 그것은 방법에 달려 있습니다.

0

가 여기에 논리적 색인을 사용하여 세 가지의 데이터를 분할하는 다른 솔루션입니다 : 당신은 통계 도구 상자가있는 경우

% Some random data 
x = rand(100,1); 
y = rand(100,1); 
cls = round(2*rand(100,1)); 

% Split the data in three groups depending on the value in cls 
x_red = x(cls==0); 
y_red = y(cls==0); 
x_green = x(cls==1); 
y_green = y(cls==1); 
x_blue = x(cls==2); 
y_blue = y(cls==2); 

% plot the data 
scatter(x_red,y_red,1,'r') 
hold on 
scatter(x_green,y_green,1,'g') 
scatter(x_blue,y_blue,1,'b') 
hold off 
+1

데이터를 직접 분할하려는 경우 'scatter'의 추가 기능을 사용하지 마십시오 (예 : 점 당 다른 색상/크기),'line' 오브젝트 (_with_''Linestyle ','none ','Marker ','o'')로 각 그룹을 간단하게 그릴 수 있습니다. 포인트가 많은 경우 성능이 향상됩니다. – Hoki

+0

@Hoki 감사합니다. 좋은 지적입니다. – am304

1

,이 일을하는 쉬운 방법이있다, 그것은 gscatter를 불렀다.

scatter 유사한 입력이 필요하지만 세 번째 입력은 그룹이다 : 당신은 색상과 마커를 추가 할 수 있습니다

gscatter(x,y,cls) 

-의 내용에 의해 결정 빨강, 다음, 녹색, 다음 파란색 (주문이 플롯 cls, 모든 마커 원

gscatter(x,y,cls,'rgb','o') 
0

c가 색 벡터되는 매우 간단한 해결책 :.

scatter3(X,Y,zeros(size(X,1)),4,c);  
view(0,90); 
관련 문제