동일한 길이의 벡터 세 개가 있습니다 : x
, y
및 cls
입니다. x와 y의 2D 플롯을 만들고 싶지만 각 포인트는 cls
의 값에 해당하는 색상을 가져야합니다.값에 따라 색상이있는 Matlab에서 2D scatter plot을 만드는 방법은 무엇입니까?
나는 scatter
함수를 사용하는 것에 대해 생각했지만 특정 요소가 아니라 전체 플롯의 색상을 변경할 수 있습니다. 어떤 아이디어? 분산의 도움에서
동일한 길이의 벡터 세 개가 있습니다 : x
, y
및 cls
입니다. x와 y의 2D 플롯을 만들고 싶지만 각 포인트는 cls
의 값에 해당하는 색상을 가져야합니다.값에 따라 색상이있는 Matlab에서 2D scatter plot을 만드는 방법은 무엇입니까?
나는 scatter
함수를 사용하는 것에 대해 생각했지만 특정 요소가 아니라 전체 플롯의 색상을 변경할 수 있습니다. 어떤 아이디어? 분산의 도움에서
:
산란 (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)
으로 다. 데이터를 분류하기 위해 일부 기계 학습 알고리즘을 적용 했습니까? 어쩌면 당신은 방정식을 배경으로부터 구할 수 있지만 그것은 방법에 달려 있습니다.
가 여기에 논리적 색인을 사용하여 세 가지의 데이터를 분할하는 다른 솔루션입니다 : 당신은 통계 도구 상자가있는 경우
% 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
,이 일을하는 쉬운 방법이있다, 그것은 gscatter
를 불렀다.
이 scatter
유사한 입력이 필요하지만 세 번째 입력은 그룹이다 : 당신은 색상과 마커를 추가 할 수 있습니다
gscatter(x,y,cls)
-의 내용에 의해 결정 빨강, 다음, 녹색, 다음 파란색 (주문이 플롯 cls
, 모든 마커 원
gscatter(x,y,cls,'rgb','o')
한 c
가 색 벡터되는 매우 간단한 해결책 :.
scatter3(X,Y,zeros(size(X,1)),4,c);
view(0,90);
데이터를 직접 분할하려는 경우 'scatter'의 추가 기능을 사용하지 마십시오 (예 : 점 당 다른 색상/크기),'line' 오브젝트 (_with_''Linestyle ','none ','Marker ','o'')로 각 그룹을 간단하게 그릴 수 있습니다. 포인트가 많은 경우 성능이 향상됩니다. – Hoki
@Hoki 감사합니다. 좋은 지적입니다. – am304