2010-05-11 6 views
3

2 차원 벡터 (2D 플롯)의 플롯을 만들려고합니다. 그러나 나는 모든 데이터 포인트가 음모에 같은 색깔을 가지기를 원하지 않습니다. 각 데이터 포인트는 그룹에 해당합니다. 각 데이터 그룹 그룹마다 다른 색상을 사용하고 싶습니다.그룹화 된 2 차원 벡터를 MATLAB에 플로팅

class=[1 3 2 5 2 5 1 3 3 4 2 2 2] 

각 데이터 포인트가 어떤 그룹

X=[x1,y1;x2,y2;x3,y3;.....] 

이들 데이터 포인트의 수는 클래스 벡터 요소의 수와 동일하다 속하는 말한다.

이제 색상을 기반으로하여 이들을 플롯하려고합니다.

답변

4

. 나는 classID 대신 class 대신 @gnovice에 동의합니다. 당신은 범례를 표시하려면

scatter(X(:,1),X(:,2),6,classID); %# the 6 sets the size of the marker. 

편집

, 당신은 @yuk 년대, 또는 @gnovice 솔루션을 사용하는 하나 있습니다.

GSCATTER

%# plot data and capture handles to the points 
hh=gscatter(randn(100,1),randn(100,1),randi(3,100,1),[],[],[],'on'); 
%# hh has an entry for each of the colored groups. Set the DisplayName property of each of them 
set(hh(1),'DisplayName','some group') 

PLOT 당신은 또한 통계 도구 상자가있는 경우 grouped data 좀보고 할 수 있습니다

%# create some data 
X = randn(100,2); 
classID = randi(2,100,1); 
classNames = {'some group','some other group'}; %# one name per class 
colors = hsv(2); %# use the hsv color map, have a color per class 

%# open a figure and plot 
figure 
hold on 
for i=1:2 %# there are two classes 
id = classID == i; 
plot(X(id,1),X(id,2),'.','Color',colors(i,:),'DisplayName',classNames{i}) 
end 
legend('show') 

.

+0

+1 : 쿨! SCATTER에 대한 네 번째 입력을 알아 채지 못했습니다. – gnovice

+1

흥미로운 점은, 클래스를 세 번째 인수로 classID와 동일한 길이로 사용하여 클래스를 기호 크기로 구분할 수 있다는 것입니다. bubbleplot을 그릴 때'scatter (X (:, 1), X (:, 2), classID * 1000, 'r.')'를 시도하십시오. – yuk

+0

감사합니다. 발견했는데 자네가 더 좋다. gscatter (m (:, 2), m (: 1), classID, 'brgyckm', 'o') – Hossein

2

첫 번째로 CLASS은 기본 제공 함수이므로 classID 대신 벡터 이름을 지정합니다.

그런 다음, classID의 각 값에 대해 다음 작업을 수행 할 수 있습니다 : 당신은 쉽게 다른 색상으로 데이터를 플롯 SCATTER을 사용할 수 있습니다

index = (classID == 1);   %# Logical index of where classID is 1 
plot(X(index,1),X(index,2),'r.'); %# Plot all classID 1 values as a red dot 
hold on;       %# Add to the existing plot 
+0

주셔서 감사합니다, 나는이를 찾았지만 당신은 더 : gscatter (m (: 2), m (: 1), CLASSID, 'brgyckm' '영형'). "수업"에 대한 의견을 보내 주셔서 감사합니다. – Hossein

2

Statistics Toolbox의 GSCATTER 기능도 확인하십시오. 각 그룹에 대해 색상, 크기 및 기호를 한 번만 지정할 수 있습니다.

gscatter(X(:,1),X(:,2),classID,'bgrcm'); 

또는 단지

gscatter(X(:,1),X(:,2),classID); %# groups by color by default