MATLAB의 산점도

Ammar Ali 2024년2월15일
MATLAB의 산점도

이 튜토리얼에서는 MATLAB의 scatter() 함수를 사용하여 산점도를 만드는 방법에 대해 설명합니다.

MATLAB의 scatter() 함수를 사용하여 산점도 생성

scatter(x,y) 함수는 입력 벡터 x 및 y로 지정된 위치에 산점도를 생성합니다. 기본적으로 scatter() 함수는 원형 마커를 사용하여 주어진 데이터를 플로팅합니다. 예를 들어 scatter() 함수를 사용하여 주어진 데이터의 산점도를 생성해 보겠습니다. 아래 코드를 참조하십시오.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);  
scatter(x,y)

출력:

산포도

변수 x 및 y에 저장된 데이터는 출력에서 ​​산점도를 만드는 데 사용됩니다. 변수 x와 y의 길이가 같아야 합니다. 그렇지 않으면 MATLAB에 오류가 표시됩니다. 기본적으로 scatter() 함수는 원의 크기와 색상에 대한 기본값을 사용하지만 함수의 기본 속성을 변경할 수 있습니다. 예를 들어, 원의 크기를 변경하려면 scatter() 함수 내에서 세 번째 인수로 원의 크기를 정의해야 합니다. 예를 들어 위의 플롯에서 원의 크기를 변경해 보겠습니다. 아래 코드를 참조하십시오.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);  
scatter(x,y,10)

출력:

산점도에서 원의 크기 변경

위 출력의 원 크기는 이전 산점도의 원 크기와 다릅니다. 크기는 양수 값이거나 입력 벡터 x 및 y와 같은 크기의 벡터여야 합니다. 크기가 위의 코드와 같이 단일 양수 값이면 산점도에 있는 모든 원에 적용됩니다. 입력 벡터 x 및 y와 길이가 같은 벡터를 사용하여 각 원에 다른 크기 값을 지정할 수도 있습니다. 예를 들어 위의 산점도에서 각 원의 크기를 변경해 보겠습니다. 아래 코드를 참조하십시오.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
scatter(x,y,CSize)

출력:

다양한 원 크기의 산점도

위의 출력에서 ​​각 원의 크기는 다릅니다. 또한 scatter() 함수의 네 번째 인수로 전달하여 산점도에서 원의 색상을 변경할 수도 있습니다. 예를 들어 위의 산점도에서 원의 색상을 검은색으로 변경해 보겠습니다. 아래 코드를 참조하십시오.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
scatter(x,y,CSize,[0 0 0])

출력:

산점도에서 원의 색상 변경하기

위의 산점도에서 원의 색상은 검은색이지만 scatter() 함수의 네 번째 인수로 해당 색상의 RGB 값을 입력하여 원의 색상을 지정할 수 있습니다. scatter() 함수에서 색상 이름을 문자열로 전달하여 색상을 변경할 수도 있습니다. 하나의 색상 값만 정의하면 산점도에 있는 모든 원에 적용됩니다. 입력 벡터 x 및 y와 동일한 크기의 행렬을 사용하여 각 원에 다른 색상을 지정할 수도 있습니다. 행렬에는 양수 값 또는 RGB 3색 색상이 포함될 수 있습니다. 예를 들어 위의 산점도에서 각 원의 색상을 변경해 보겠습니다. 아래 코드를 참조하십시오.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
CColor = 100:-1:1;
scatter(x,y,CSize,CColor)
colorbar

출력:

다양한 원 색상의 산점도

colorbar 명령은 위의 코드에서 산점도에 색상 막대를 표시하는 데 사용됩니다. 색상 막대에서 낮은 값은 더 차가운 색에 속하고 높은 값은 더 뜨거운 색에 속한다는 것을 알 수 있습니다. 이 예에서는 양수 값이 있는 벡터를 사용했지만 RGB 삼중항 값이 있는 행렬을 사용할 수도 있습니다. 위의 산점도에서 원은 비어 있지만 scatter() 함수 내부의 filled 속성을 사용하여 원을 채울 수도 있습니다. 예를 들어, 위의 산점도에 있는 원을 채워봅시다. 아래 코드를 참조하십시오.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
CColor = 100:-1:1;
scatter(x,y,CSize,CColor,'filled')
colorbar

출력:

산점도에서 원 채우기

출력에서 각 색상이 채워집니다. 산점도에서 마커 기호를 변경할 수도 있습니다. 기본적으로 scatter() 함수는 원을 마커로 사용하지만 다이아몬드의 경우 d, 펜타그램의 경우 p, 헥사그램의 경우 h와 같은 마커 기호가 포함된 문자열을 전달하여 변경할 수 있습니다. , 등등. 예를 들어 위의 산점도에서 마커 기호를 원에서 오각형으로 변경해 보겠습니다. 아래 코드를 참조하십시오.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
CColor = 100:-1:1;
scatter(x,y,CSize,CColor,'p')

출력:

산점도에서 마커 기호 변경하기

출력에서 마커 기호가 오각형으로 변경됩니다. scatter() 함수의 MarkerFaceAlpha 속성을 사용하여 마커의 투명도를 변경할 수도 있습니다. 투명도 값을 0에서 1로 변경할 수 있습니다. 예를 들어 위 산점도의 투명도를 0.5로 변경해 보겠습니다. 아래 코드를 참조하십시오.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
CColor = 100:-1:1;
scatter(x,y,CSize,CColor,'filled','MarkerFaceAlpha',0.5)

출력:

산점도에서 마커 투명도 변경하기

출력에서 마커의 가장자리와 면 색상은 동일하지만 마커에 다른 가장자리와 면 색상을 지정할 수 있습니다. 마커의 가장자리 색상을 변경하기 위해 scatter() 플롯 내 MarkerEdgeColor 속성을 사용할 수 있습니다. 마커의 얼굴 색상을 변경하려면 MarkerFaceColor 속성을 사용할 수 있습니다. 색상 값은 RGB 3색 또는 색상 이름이 포함된 문자열일 수 있습니다. LineWidth 속성을 사용하여 마커 가장자리의 선 너비를 변경할 수도 있습니다. 예를 들어 위의 산점도에서 마커의 가장자리 색상, 면 색상, 선 너비를 변경해 보겠습니다. 아래 코드를 참조하십시오.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
CSize = 1:100;
scatter(x,y,CSize,'MarkerFaceColor','yellow','MarkerEdgeColor','black','LineWidth',1.5)

출력:

산점도에서 마커 면 및 가장자리 색상 변경하기

출력에서 마커 면 색상은 노란색이고 가장자리 색상은 검정색입니다. 3D 산점도를 생성하려면 scatter3() 함수를 사용할 수 있습니다. 이 함수는 주어진 데이터를 3D 평면에 플로팅한다는 점을 제외하고 scatter() 함수와 동일합니다. scatter3() 함수에 두 개 또는 세 개의 입력 벡터를 제공할 수 있습니다. 세 개의 입력이 있는 경우 첫 번째 벡터는 x 좌표를 포함하고 두 번째 벡터는 y 좌표를 포함하고 세 번째 벡터는 z 좌표를 포함합니다. 두 개의 입력 벡터의 경우 세 번째 좌표 z는 처음 두 좌표의 인덱스에서 가져옵니다. 예를 들어 scatter3() 함수를 사용하여 위의 산점도를 3D 위치에 플롯해 보겠습니다. 아래 코드를 참조하십시오.

clc
x = linspace(0,2*pi,100);
y = sin(x) + rand(1,100);
z = 1:100;
scatter3(x,y,z)

출력:

3D 평면의 산점도

scatter() 함수에서와 동일한 방식으로 scatter3() 함수 속성을 변경할 수도 있습니다.

작가: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

관련 문장 - MATLAB Plot