Main Content

subplot

타일 형식 위치로 좌표축 생성

설명

예제

참고

subplot보다는 tiledlayout이 권장됩니다. 이 함수를 사용하면 조정 가능한 타일 간격, Figure의 크기에 따라 재배치되는 타일, 더 잘 배치된 컬러바와 범례를 갖는 레이아웃을 만들 수 있기 때문입니다. (R2019b 이후)

subplot(m,n,p)는 현재 Figure를 m×n 그리드로 나누고, p로 지정된 위치에 좌표축을 만듭니다. MATLAB®은 행을 기준으로 서브플롯 위치의 번호를 매깁니다. 첫 번째 서브플롯은 첫 번째 행의 첫 번째 열이고, 두 번째 서브플롯은 첫 번째 행의 두 번째 열이 되는 방식으로 진행됩니다. 지정된 위치에 좌표축이 있는 경우 이 명령은 그 좌표축을 현재 좌표축으로 지정합니다.

예제

subplot(m,n,p,'replace')는 위치 p에서 기존 좌표축을 삭제하고, 새 좌표축을 만듭니다.

subplot(m,n,p,'align') 은 플롯 상자가 정렬되도록 새 좌표축을 만듭니다. 이 옵션은 디폴트 동작입니다.

예제

subplot(m,n,p,ax)는 기존 좌표축 ax를 동일한 Figure의 서브플롯으로 변환합니다.

예제

subplot('Position',pos)pos로 지정된 사용자 지정 위치에 좌표축을 만듭니다. 그리드의 정렬 위치에서 벗어나는 서브플롯을 배치할 때 이 옵션을 사용할 수 있습니다. pos[left bottom width height] 형식의, 요소를 4개 가진 벡터로 지정합니다. 새 좌표축이 기존 좌표축과 겹치는 경우 기존 좌표축이 새 좌표축으로 대체됩니다.

subplot(___,Name,Value)는 하나 이상의 이름-값 쌍의 인수를 사용하여 axes 속성을 수정합니다. 다른 모든 입력 인수 다음에 axes 속성을 설정합니다.

예제

ax = subplot(___)Axes 객체, PolarAxes 객체 또는 GeographicAxes 객체를 생성합니다. 이후에 좌표축을 수정하려면 ax를 사용하십시오.

예제

subplot(ax)ax로 지정된 좌표축을 부모 Figure의 현재 좌표축으로 지정합니다. 현재 Figure로 설정되어 있지 않은 부모 Figure를 이 옵션이 현재 Figure로 지정하지는 않습니다.

예제

모두 축소

2개의 누적 서브플롯이 있는 Figure를 만듭니다. 각 서브플롯에 사인파를 플로팅합니다.

subplot(2,1,1);
x = linspace(0,10);
y1 = sin(x);
plot(x,y1)

subplot(2,1,2); 
y2 = sin(5*x);
plot(x,y2)

Figure contains 2 axes objects. Axes object 1 contains an object of type line. Axes object 2 contains an object of type line.

4개 서브플롯으로 나뉜 Figure를 만듭니다. 각 서브플롯에 사인파를 플로팅하고, 각 서브플롯의 제목을 지정합니다.

subplot(2,2,1)
x = linspace(0,10);
y1 = sin(x);
plot(x,y1)
title('Subplot 1: sin(x)')

subplot(2,2,2)
y2 = sin(2*x);
plot(x,y2)
title('Subplot 2: sin(2x)')

subplot(2,2,3)
y3 = sin(4*x);
plot(x,y3)
title('Subplot 3: sin(4x)')

subplot(2,2,4)
y4 = sin(8*x);
plot(x,y4)
title('Subplot 4: sin(8x)')

Figure contains 4 axes objects. Axes object 1 with title Subplot 1: sin(x) contains an object of type line. Axes object 2 with title Subplot 2: sin(2x) contains an object of type line. Axes object 3 with title Subplot 3: sin(4x) contains an object of type line. Axes object 4 with title Subplot 4: sin(8x) contains an object of type line.

3개 서브플롯이 있는 Figure를 만듭니다. Figure의 위쪽 절반에 2개의 서브플롯을 만들고, Figure의 아래쪽 절반 전체에 걸쳐 세 번째 서브플롯을 만듭니다. 각 서브플롯에 제목을 추가합니다.

subplot(2,2,1);
x = linspace(-3.8,3.8);
y_cos = cos(x);
plot(x,y_cos);
title('Subplot 1: Cosine')

subplot(2,2,2);
y_poly = 1 - x.^2./2 + x.^4./24;
plot(x,y_poly,'g');
title('Subplot 2: Polynomial')

subplot(2,2,[3,4]);
plot(x,y_cos,'b',x,y_poly,'g');
title('Subplot 3 and 4: Both')

Figure contains 3 axes objects. Axes object 1 with title Subplot 1: Cosine contains an object of type line. Axes object 2 with title Subplot 2: Polynomial contains an object of type line. Axes object 3 with title Subplot 3 and 4: Both contains 2 objects of type line.

랜덤 데이터로 구성된 4개 줄기 플롯을 가진 Figure를 만듭니다. 그런 다음, 두 번째 서브플롯을 빈 좌표축으로 바꿉니다.

for k = 1:4
    data = rand(1,10);
    subplot(2,2,k)
    stem(data)
end

Figure contains 4 axes objects. Axes object 1 contains an object of type stem. Axes object 2 contains an object of type stem. Axes object 3 contains an object of type stem. Axes object 4 contains an object of type stem.

subplot(2,2,2,'replace')

Figure contains 4 axes objects. Axes object 1 contains an object of type stem. Axes object 2 contains an object of type stem. Axes object 3 contains an object of type stem. Axes object 4 is empty.

그리드의 정렬 위치에서 벗어나는 2개의 서브플롯이 있는 Figure를 만듭니다. 각 서브플롯의 사용자 지정 위치를 지정합니다.

pos1 = [0.1 0.3 0.3 0.3];
subplot('Position',pos1)
y = magic(4);
plot(y)
title('First Subplot')

pos2 = [0.5 0.15 0.4 0.7];
subplot('Position',pos2)
bar(y)
title('Second Subplot')

Figure contains 2 axes objects. Axes object 1 with title First Subplot contains 4 objects of type line. Axes object 2 with title Second Subplot contains 4 objects of type bar.

2개의 극좌표 좌표축이 있는 Figure를 만듭니다. 상부 서브플롯에 극좌표 선 차트를 만들고, 하부 서브플롯에 극좌표 산점도 차트를 만듭니다.

figure
ax1 = subplot(2,1,1,polaraxes);
theta = linspace(0,2*pi,50);
rho = sin(theta).*cos(theta);
polarplot(ax1,theta,rho)

ax2 = subplot(2,1,2,polaraxes);
polarscatter(ax2,theta,rho)

Figure contains 2 axes objects. Polaraxes object 1 contains an object of type line. Polaraxes object 2 contains an object of type scatter.

2개의 서브플롯이 있는 Figure를 만듭니다. Axes 객체를 변수 ax1ax2에 할당합니다. Axes 객체를 플로팅 함수에 입력값으로 지정하여 그 플로팅 함수가 특정 서브플롯에 그려지는지 확인합니다.

ax1 = subplot(2,1,1);
Z = peaks;
plot(ax1,Z(1:20,:))

ax2 = subplot(2,1,2);  
plot(ax2,Z)

Figure contains 2 axes objects. Axes object 1 contains 49 objects of type line. Axes object 2 contains 49 objects of type line.

Axes 객체의 속성을 설정하여 좌표축을 수정합니다. 상부 서브플롯의 글꼴 크기와 하부 서브플롯의 선 너비를 변경합니다. 일부 플로팅 함수는 axes 속성을 설정합니다. 기존 axes 속성 설정이 무시되지 않도록 하려면 axes 속성을 지정하기 전에 플로팅 함수를 실행하십시오. 점 표기법을 사용하여 속성을 설정합니다.

ax1.FontSize = 15;
ax2.LineWidth = 2;

Figure contains 2 axes objects. Axes object 1 contains 49 objects of type line. Axes object 2 contains 49 objects of type line.

여러 개의 서브플롯이 있는 Figure를 만듭니다. Axes 객체를 벡터 ax에 저장합니다. 그런 다음, 두 번째 서브플롯을 현재 좌표축으로 지정합니다. 선 차트를 만들고, 두 번째 서브플롯의 축 제한을 변경합니다. 기본적으로, 그래픽스 함수는 현재 좌표축을 대상으로 합니다.

for k = 1:4
    ax(k) = subplot(2,2,k);
end

subplot(ax(2))
x = linspace(1,50);
y = sin(x);
plot(x,y,'Color',[0.1, 0.5, 0.1])
title('Second Subplot')
axis([0 50 -1 1])

Figure contains 4 axes objects. Axes object 1 is empty. Axes object 2 with title Second Subplot contains an object of type line. Axes object 3 is empty. Axes object 4 is empty.

선 차트를 만듭니다. 그런 다음, Figure의 하부 서브플롯이 되도록 좌표축을 변환합니다. subplot 함수는 원래 좌표축이 존재하던 Figure를 사용합니다.

x = linspace(1,10);
y = sin(x);
plot(x,y)
title('Sine Plot')

Figure contains an axes object. The axes object with title Sine Plot contains an object of type line.

ax = gca;
subplot(2,1,2,ax)

Figure contains an axes object. The axes object with title Sine Plot contains an object of type line.

별도의 Figure에 있는 좌표축을 서브플롯이 있는 단일 Figure에 결합합니다.

두 개의 서로 다른 Figure에 두 개의 플롯을 만듭니다. Axes 객체를 변수 ax1ax2에 할당합니다. 변수 lgdLegend 객체를 할당합니다.

figure
x = linspace(0,10);
y1 = sin(x);
plot(x,y1)
title('Line Plot 1')
ax1 = gca;

Plot of a sine wave entitled "Line Plot 1"

figure
y2 = 2*sin(x);
plot(x,y2)
title('Line Plot 2')
lgd = legend('2*Sin(x)');
ax2 = gca;

Plot of a sine wave with a legend entitled "Line Plot 2"

copyobj를 사용하여 두 Axes 객체의 복사본을 만듭니다. 복사될 좌표축의 부모를 새 Figure로 지정합니다. legend와 colorbar는 연관 좌표축과 함께 복사되지 않으므로 좌표축과 함께 범례를 복사합니다.

fnew = figure;
ax1_copy = copyobj(ax1,fnew);
subplot(2,1,1,ax1_copy)

copies = copyobj([ax2,lgd],fnew);
ax2_copy = copies(1);
subplot(2,1,2,ax2_copy)

Figure containing both of the preceding plots

입력 인수

모두 축소

그리드 행 개수로, 양의 정수로 지정됩니다.

데이터형: single | double

그리드 열 개수로, 양의 정수로 지정됩니다.

데이터형: single | double

새 좌표축의 그리드 위치로, 스칼라 또는 양의 정수로 구성된 벡터로 지정됩니다.

  • p가 양의 정수 스칼라인 경우 subplot은 그리드 위치 p에 서브플롯을 만듭니다.

  • p가 양의 정수로 구성된 벡터인 경우 subplotp에 나열된 그리드 위치에 걸쳐 있는 서브플롯을 만듭니다.

예: subplot(2,3,1)은 위치 1에 서브플롯을 만듭니다.

예: subplot(2,3,[2,5])는 위치 2와 위치 5에 걸쳐 있는 서브플롯을 만듭니다.

예: subplot(2,3,[2,6])은 위치 2, 3, 5, 6에 걸쳐 있는 서브플롯을 만듭니다.

데이터형: single | double

새 좌표축의 사용자 지정 위치로, [left bottom width height] 형식의, 요소를 4개 가진 벡터로 지정됩니다.

  • left 요소와 bottom 요소는 Figure의 왼쪽 맨 아래 코너를 기준으로 서브플롯의 왼쪽 맨 아래 코너의 위치를 지정합니다.

  • width 요소와 height 요소는 서브플롯의 치수를 지정합니다.

Figure의 내부에 대해 정규화되는 01 사이의 값을 지정합니다.

참고

스크립트를 사용하여 서브플롯을 만드는 경우 MATLAB은 drawnow 명령이 실행되거나 MATLAB이 사용자 명령을 대기하기 위해 돌아올 때까지 Position 속성값을 완성하지 않습니다. 서브플롯의 Position 속성값은 스크립트가 플롯을 새로 고치거나 종료될 때까지 변경될 수 있습니다.

예: subplot('Position',[0.1 0.1 0.45 0.45])

데이터형: single | double

현재 좌표축으로 지정하거나 서브플롯으로 변환할 기존 좌표축으로, Axes 객체, PolarAxes 객체, GeographicAxes 객체 또는 PositionConstraint 속성을 가진 그래픽스 객체(예: HeatmapChart 객체)로 지정됩니다.

서브플롯 위치에 빈 극좌표 좌표축이나 빈 지리 좌표축을 생성하려면 axpolaraxes 함수나 geoaxes 함수로 지정하십시오. 예를 들면 subplot(2,1,2,polaraxes)와 같습니다.

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: subplot(m,n,p,'XGrid','on')

일부 플로팅 함수는 속성 설정을 재정의합니다. 플로팅을 먼저 하고 나서 axes 속성을 재설정하십시오. 설정할 수 있는 속성은 다음과 같이 좌표축의 유형에 따라 달라집니다.

  • Figure의 내용을 지우려면 clf를 사용하십시오. 예를 들어, 새 서브플롯 레이아웃을 만들기 전에 Figure에서 기존 서브플롯 레이아웃을 지울 수 있습니다.

  • 좌표축을 겹치려면 axes 명령을 사용하십시오. subplot 함수는 새 좌표축과 겹치는 기존 좌표축을 삭제합니다. 예를 들어, subplot('Position',[.35 .35 .3 .3])은 기본 좌표축을 삭제하지만 axes('Position',[.35 .35 .3 .3])은 기본 좌표축을 삭제하지 않고 Figure의 중간에 새 좌표축을 배치합니다.

  • subplot(111)은 예외이며, subplot(1,1,1)과 동작이 동일하지 않습니다. 이전 버전과의 호환성을 이유로, subplot(111)은 좌표축을 즉시 생성하지 않는 서브플롯의 특별한 경우이지만 다음 그래픽스 명령이 clf reset을 실행하도록 Figure를 설정합니다. 다음 그래픽스 명령은 Figure의 모든 자식을 삭제하고 디폴트 위치에 새 좌표축을 만듭니다. subplot(111)Axes 객체를 반환하지 않으며 코드가 반환 인수를 지정할 경우 오류가 발생합니다.

대체 기능

tiledlayout 함수와 nexttile 함수를 사용하면 플롯을 구성이 유연한 타일 형식 배열로 생성할 수 있습니다. 구성 옵션은 다음과 같습니다.

  • 플롯 간 공간과 레이아웃 가장자리 주변의 공간 제어

  • 레이아웃 상단에 공통 제목을 표시하는 옵션

  • 공통의 x, y축 레이블 옵션

  • 타일 형식 배열을 고정 크기와 재배치 가능한 가변 크기 중에서 선택하여 제어하는 옵션

자세한 내용은 여러 개의 플롯 결합하기 항목을 참조하십시오.

버전 내역

R2006a 이전에 개발됨