Main Content

좌표축 레이아웃 제어하기

위치 관련 속성과 함수

좌표축의 크기와 위치를 가져오고 설정하기 위한 몇 가지 속성과 함수가 있습니다. 다음 표에 요약되어 있습니다.

함수 또는 속성설명

OuterPosition 속성

제목, 레이블, 여백을 포함한 좌표축의 외부 경계를 쿼리하거나 변경하려면 이 속성을 사용합니다. 외부 경계를 변경하려면 이 속성을 [left bottom width height] 형식의 벡터로 지정합니다. left 값과 bottom 값은 Figure의 왼쪽 아래 코너부터 외부 경계의 왼쪽 아래 코너까지의 거리를 나타냅니다. width 값과 height 값은 외부 경계 크기를 나타냅니다.

Position 속성

일반적으로 플롯 상자로 경계가 지정되는 플로팅 영역을 쿼리하거나 변경하려면 이 속성을 사용합니다. 이 영역은 제목과 레이블, 제목과 레이블 주변의 여백을 제외합니다. 플로팅 영역의 크기를 변경하려면 이 속성을 [left bottom width height] 형식의 벡터로 지정합니다.

tightPosition 함수 (R2022b 이후)

일반적으로 플롯 상자로 경계가 지정되는 플로팅 영역을 쿼리하려면 이 항수를 사용합니다. 종횡비 제약이 있는 좌표축(예: 정사각 좌표축, 극좌표 좌표축 또는 이미지가 포함된 좌표축)에 대해서는 대체로 이 함수가 Position 속성보다 더 정확한 크기와 위치 정보를 반환합니다.

TightInset 속성

플롯 상자를 둘러싸는 제목, 눈금 레이블, 축 레이블의 여백을 쿼리하려면 이 속성을 사용합니다. 축 레이블과 제목을 추가하면 MATLAB®이 텍스트에 맞게 이 속성을 업데이트합니다. Position 속성과 TightInset 속성으로 정의되는 경계의 크기에는 모든 텍스트 레이블이 포함됩니다.

PositionConstraint 속성 (R2020a 이후)

제목 또는 레이블을 추가할 때 (좌표축 내부의) 플로팅 영역 또는 좌표축의 외부 경계를 유지하는지 여부를 쿼리하거나 제어하려면 이 속성을 사용합니다. 좌표축의 어느 특성을 유지할지 변경하려면 이 속성을 "innerposition" 또는 "outerposition"으로 지정합니다.

Units 속성

좌표축 위치 값의 단위를 쿼리하거나 변경하려면 이 속성을 사용합니다. 자동 좌표축 크기 조정을 사용하려면 이 값이 "normalized"(디폴트 값)로 설정되어야 합니다.

axis 함수

계산을 하거나 특정 속성을 설정하지 않고도 좌표축 제한이나 종횡비를 조정하려면 이 함수를 사용합니다. 예를 들면 다음과 같습니다.

  • axis image — 이미지에 맞게 플롯 상자 크기를 변경합니다.

  • axis padded — 시각화된 결과(예: 플로팅된 선)와 플롯 상자 사이에 채우기 여백을 추가합니다.

위치와 여백 경계

이 Figure에서는 OuterPosition 값(빨간색), Position 값(파란색), TightInset으로 확장된 Position 값(자홍색)으로 정의된 좌표축 영역의 2차원 보기를 보여줍니다.

2-D Cartesian axes with a red rectangle drawn around the area defined by the OuterPosition values, a blue rectangle drawn around the region defined by the Position values, and a magenta rectangle drawn around the area defined by the Position and TightInset values combined

이 Figure에서는 OuterPosition 값(빨간색), Position 값(파란색), TightInset으로 확장된 Position 값(자홍색)으로 정의된 좌표축 영역의 3차원 보기를 보여줍니다.

3-D Cartesian axes with a red rectangle drawn around the area defined by the OuterPosition values, a blue rectangle drawn around the region defined by the Position values, and a magenta rectangle drawn around the area defined by the Position and TightInset values combined

정사각형의 위치 또는 종횡비 제약

R2022b 이후

예를 들어 이미지를 플로팅할 때 좌표축에 종횡비 제약이 있는 경우 Position 속성과 tightPosition 함수는 서로 다른 결과를 반환합니다. 만들려는 표시 유형에 따라 두 방법 중 하나를 사용하십시오.

예를 들어 이미지 하나를 표시합니다. axis 함수를 사용하여 이미지의 종횡비를 유지합니다.

figure
C = imread("ngc6543a.jpg");
ax = axes;
image(C)
axis image

tightPosition 함수를 호출하여 위치 벡터를 가져옵니다. 벡터를 사용하여, 현재 좌표축에 표시된 이미지를 둘러싸는 빨간색 사각형을 그립니다.

tpos = tightPosition(ax);
annotation("rectangle",tpos,Color="red",LineWidth=2)

Axes showing an image with a red rectangle drawn around the area defined by the value returned by the tightPosition function

좌표축의 Position 속성을 쿼리하여 또 다른 위치 벡터를 가져옵니다. 벡터를 사용하여, 크기는 비슷하지만 디폴트 종횡비를 갖는 이미지의 플로팅 영역을 정의하는 파란색 사각형을 그립니다. 이 벡터의 값은 서로 다른 종횡비를 갖는 여러 이미지를 연속으로 표시할 경우 전체 이미지 영역을 쿼리할 때 유용할 수 있습니다.

pos = ax.Position;
annotation("rectangle",pos,Color="blue",LineWidth=2)

Axes showing an image with a red rectangle drawn around the area defined by the value returned by the tightPosition function. A blue rectangle is drawn around the area defined by the Position property. The red rectangle coincides with the perimeter of the plot box. The area returned by the Position property has more space on the left and right sides of the image.

자동 크기 조정 동작 제어하기

경우에 따라 Axes 객체가 자동으로 크기를 조정하도록 트리거될 수 있습니다. 예를 들어, 대화형 방식으로 Figure의 크기를 조정하거나 제목이나 축 레이블을 추가하면 자동 크기 조정이 활성화됩니다. 때때로 새로운 좌표축 크기가 Position 값과 OuterPosition 값을 모두 충족하지 못할 수 있으므로 PositionConstraint 속성은 유지할 값을 표시합니다.

PositionConstraint 속성을 다음 값 중 하나로 지정합니다.

  • "outerposition"OuterPosition 값을 유지합니다. 좌표축이나 다른 주변 텍스트가 특정 외부 경계를 넘어서 확장되지 않도록 하려면 이 옵션을 사용하십시오. MATLAB은 내용이 외부 경계 내에 피팅되도록 좌표축 내부 영역(플롯이 표시되는 영역)의 크기를 조정합니다.

  • "innerposition"InnerPosition 값을 유지합니다. 좌표축의 내부 영역이 Figure 내에서 특정 크기를 유지하도록 하려면 이 옵션을 사용하십시오. 이 옵션을 사용하면 경우에 따라 텍스트가 Figure를 벗어날 수 있습니다.

R2020a 이전: ActivePositionProperty와 값 "outerposition" 또는 "position"을 사용합니다.

일반적으로 PositionConstraint 속성을 "outerposition"으로 설정하는 것이 바람직합니다. 좌표축 제목이나 레이블이 지나치게 길 경우 좌표축 내부 영역이 읽기 어려울 정도로 축소될 수 있습니다. 이 경우 주변 텍스트가 Figure를 벗어나더라도 내부 좌표축을 특정 크기로 유지하는 것이 바람직할 수 있습니다.

예를 들어, 좌표축이 2개인 Figure를 만들고 각 좌표축 위치의 너비와 높이를 똑같이 지정합니다. PositionConstraint 속성을 상부 좌표축에 대해서는 "outerposition"으로 설정하고 하부 좌표축에 대해서는 "innerposition"으로 설정합니다. 상부 좌표축에서는 내부 영역이 텍스트에 맞게 축소되지만, 텍스트가 Figure 밖으로 벗어나지 않습니다. 하부 좌표축에서는 내부 영역의 크기가 유지되지만, 일부 텍스트가 잘립니다.

figure; 
ax1 = axes("Position",[0.13 0.58 0.77 0.34]);
ax1.PositionConstraint = "outerposition";
plot(ax1,1:10)
title(ax1,"Preserve OuterPosition")
yticklabels(ax1,["My incredibly descriptive, excessively wordy, and overly long label",...
    "label 2","label 3"])

ax2 = axes("Position",[0.13 0.11 0.77 0.34]);
ax2.PositionConstraint = "innerposition";
plot(ax2,1:10)
title(ax2,"Preserve Position")
yticklabels(ax2,["My incredibly descriptive, excessively wordy, and overly long label",...
    "label 2","label 3"])

Two axes that are vertically stacked. The upper axes has a long y-axis label, and the plot box has shrunk to accommodate the long string of text. In the lower axes, the y-axis label is clipped to preserve the size of the plot box.

늘여서 채우기(Stretch-To-Fill) 동작

기본적으로, MATLAB은 좌표축을 늘여서 사용 가능한 공간을 채웁니다. “늘여서 채우기” 동작을 사용하면 왜곡이 어느 정도 발생할 수 있습니다. 따라서 좌표축이 DataAspectRatio 속성, PlotBoxAspectRatio 속성, CameraViewAngle 속성에 저장된 데이터 종횡비 값, 플롯 상자 종횡비 값, 카메라 시야각 값과 정확하게 일치하지 않을 수 있습니다. Axes 객체의 DataAspectRatioMode, PlotBoxAspectRatioMode, CameraViewAngleMode 속성이 "auto"로 설정되면 “늘여서 채우기” 동작이 활성화됩니다.

데이터 종횡비, 플롯 상자 종횡비 또는 카메라 시야각을 지정할 경우, "늘여서 채우기" 동작은 비활성화됩니다. "늘여서 채우기" 동작이 비활성화된 경우 MATLAB에서는 좌표축을 사용 가능한 공간 내에서 가능한 한 크게 만들고 왜곡이 없도록 속성값을 엄격히 준수합니다.

예를 들어, 다음 Figure에서는 동일한 플롯을 "늘여서 채우기" 동작이 활성화된 상태에서 표시한 모습과 비활성화된 상태에서 표시한 모습을 보여줍니다. 두 버전 모두에서 데이터 종횡비 값, 플롯 상자 종횡비 값, 카메라 시야각 값은 동일합니다. 그러나 왼쪽 플롯에서는 늘이기 동작으로 인해 어느 정도 왜곡이 발생합니다.

늘여서 채우기 활성화(일부 왜곡 발생)늘여서 채우기 비활성화(왜곡 없음)

Plot of a circle stretched to fill the plot box, which is rectangular. Tthe circle displays as an oval.

Plot of a circle without any distortion

참고 항목

함수

속성

관련 항목