Main Content

앱 디자이너에서 그래픽스 표시하기

앱 디자이너 그래픽스 개요

MATLAB®(및 MATLAB 툴박스)의 그래픽스 함수 대부분에는 대상 좌표축 또는 부모 객체를 지정하는 데 사용할 수 있는 인수가 있습니다. 이 인수는 대부분의 상황에서는 선택 사항이지만, 앱 디자이너에서 이런 그래픽스 함수를 호출하는 경우에는 이 인수를 반드시 지정해야 합니다. 그 이유는 대부분의 상황에서 MATLAB은 기본적으로 gcf 함수 또는 gca 함수를 사용하여 작업에 사용할 대상 객체를 가져오기 때문입니다. 그러나 이러한 함수는 부모 Figure의 HandleVisibility 속성이 'on' 상태여야 하는데, 기본적으로 앱 디자이너 Figure의 HandleVisibility 속성은 'off'로 설정됩니다. 즉, gcfgca 함수는 정상적으로 작동하지 않습니다. 결과적으로 대상 좌표축 또는 부모 객체의 인수를 생략하면 예상치 않은 결과가 생성될 수 있습니다.

호출하는 그래픽스 함수에 따라 다음 항목을 지정해야 할 수 있습니다.

  • 캔버스의 UIAxes 컴포넌트

  • 앱의 부모 컨테이너

  • 앱 코드에 프로그래밍 방식으로 생성한 좌표축 컴포넌트

그래픽스 함수의 대상 컴포넌트를 지정하는 방법은 몇 가지가 있습니다. 가장 일반적으로 사용되는 구문의 예는 다음과 같습니다. 상황에 맞는 적합한 대상과 구문을 확인하려면 사용하고 있는 특정 그래픽스 함수의 문서를 참조하십시오.

기존 좌표축에 그래픽스 표시하기

앱 디자이너에 그래픽스를 표시하는 가장 일반적인 방법은 앱 디자이너 캔버스에 UIAxes 객체를 그래픽스 함수 대상으로 지정하는 것입니다. 좌표축 컴포넌트를 컴포넌트 라이브러리에서 캔버스로 끌어서 놓으면 UIAxes 객체가 앱에 생성됩니다. 앱 디자이너 axes 객체의 디폴트 이름은 app.UIAxes입니다. 캔버스의 특정 좌표축 이름을 확인하거나 변경하려면 좌표축 컴포넌트를 선택하십시오. 컴포넌트 브라우저에 좌표축 컴포넌트의 이름이 나열되고 편집할 수 있습니다.

좌표축을 첫 번째 인수로 지정하기

대부분의 그래픽스 함수에는 대상 axes 객체를 지정하기 위한 첫 번째 입력 인수(선택 사항)가 있습니다. 예를 들어, plot 함수와 hold 함수는 모두 이런 방식으로 대상 axes 객체를 입력으로 받습니다. 캔버스의 좌표축에 두 개의 선을 플로팅하려면 호출하는 각 함수에 대해 axes 객체 이름을 첫 번째 인수로 지정하십시오.

plot(app.UIAxes,[1 2 3 4],'-r');
hold(app.UIAxes);
plot(app.UIAxes,[10 9 4 7],'--b');

좌표축을 이름-값 인수로 지정하기

일부 그래픽스 함수에서는 대상 axes 객체를 이름-값 인수로 지정해야 합니다. 예를 들어, imshowtriplot 함수를 호출할 때는 'Parent' 이름-값 인수를 사용하여 그래픽스를 표시할 axes 객체를 지정해야 합니다. 이 코드는 캔버스의 기존 좌표축에 이미지를 표시합니다.

imshow('peppers.png','Parent',app.UIAxes);

컨테이너에 그래픽스 표시하기

일부 그래픽스 함수는 axes 객체 대신 Figure, 패널, 그리드 레이아웃과 같은 컨테이너 컴포넌트에 그래픽스를 표시합니다. 예를 들어, heatmap 함수에는 차트가 표시될 컨테이너를 지정하기 위한 첫 번째 인수(선택 사항)가 있습니다.

앱 디자이너로 만든 모든 앱은 기본적으로 app.UIFigure라고 하는 Figure 객체를 가지며, 이는 메인 앱 창을 구성하는 컴포넌트를 위한 컨테이너입니다. 메인 앱 창에 그래픽스를 표시하려면 app.UIFigure를 부모 컨테이너 인수로 지정합니다. 예를 들어, 앱에 히트맵을 생성하려면 이 구문을 사용하십시오.

h = heatmap(app.UIFigure,rand(10));

부모 컨테이너 입력 인수를 받는 그래픽스를 추가로 구성하고 구분하려면 컴포넌트 라이브러리에서 패널, 탭 또는 그리드 레이아웃과 같은 컨테이너 컴포넌트를 캔버스로 끌어서 놓으십시오. 컴포넌트 브라우저에서 컴포넌트를 선택하고 이름을 살펴봄으로써 컴포넌트 이름을 확인합니다. 그런 다음, 그래픽스 함수를 호출할 때 이 컨테이너를 부모로 지정할 수 있습니다.

부모 컨테이너를 입력으로 받는 그래픽스 함수 중 일반적으로 사용되는 다른 함수로는 annotation, geobubble, parallelplot, scatterhistogram, stackedplotwordcloud 함수가 있습니다.

프로그래밍 방식으로 좌표축 만들기

일부 그래픽스 함수는 특화된 좌표축에 데이터를 플로팅합니다. 예를 들어, 극좌표 데이터를 플로팅하는 함수는 PolarAxes 객체에 플로팅해야 합니다. 컴포넌트 라이브러리에서 앱에 추가할 수 있는 UIAxes 객체와 달리, 특화된 좌표축은 앱 코드에 프로그래밍 방식으로 추가해야 합니다. 프로그래밍 방식으로 axes 객체를 만들려면 앱에 대한 StartupFcn 콜백을 생성하십시오. 콜백 내에서 적절한 그래픽스 함수를 호출하고 앱에 포함된 부모 컨테이너를 대상으로 지정합니다.

극좌표 좌표축에 플로팅하기

polarplot, polarhistogram, polarscatter 같은 함수는 polar axes 객체를 대상 좌표축으로 입력 받습니다. polaraxes 함수를 호출하여 프로그래밍 방식으로 극좌표 좌표축을 만듭니다. 예를 들어, 극좌표 방정식을 패널에 플로팅하려면 먼저 컴포넌트 라이브러리에서 패널 컴포넌트를 캔버스로 끌어서 놓으십시오. 앱 코드에서 polaraxes 함수를 호출하고 패널을 부모 컨테이너로 지정하여 polar axes 객체를 만듭니다. 그런 다음, 극좌표 좌표축을 대상 좌표축으로 지정하면서 polarplot 함수를 사용하여 방정식을 플로팅합니다.

theta = 0:0.01:2*pi;
rho = sin(2*theta).*cos(2*theta);
pax = polaraxes(app.Panel);
polarplot(pax,theta,rho)

지리 좌표축에 플로팅하기

geoplot, geoscatter, geodensityplot 같은 함수는 geographic axes 객체를 대상 좌표축으로 입력 받습니다. geoaxes 함수를 호출하여 프로그래밍 방식으로 지리 좌표축을 만듭니다. 예를 들어, 패널에 지리 데이터를 플로팅하려면 다음 코드를 사용하십시오.

latSeattle = 47 + 37/60;
lonSeattle = -(122 + 20/60);
gx = geoaxes(app.Panel);
geoplot(gx,latSeattle,lonSeattle)

타일 형식 차트 레이아웃 만들기

tiledlayout 함수를 사용하여 여러 차트를 타일 형식으로 표시하려면 패널에 타일 형식 차트 레이아웃을 만들고 그 내부에 nexttile 함수를 사용하여 프로그래밍 방식으로 좌표축을 만듭니다. nexttile 함수에서 axes 객체를 반환하고 이를 사용하여 차트 또는 플롯의 좌표축을 지정합니다.

t = tiledlayout(app.Panel,2,1);
[X,Y,Z] = peaks(20)

% Tile 1
ax1 = nexttile(t);
surf(ax1,X,Y,Z)

% Tile 2
ax2 = nexttile(t);
contour(ax2,X,Y,Z)

대상 인수가 없는 함수 사용하기

ginputgtext 같은 일부 그래픽스 함수에는 대상을 지정하는 인수가 없습니다. 따라서 이러한 함수를 호출하기 전에는 앱 디자이너 Figure의 HandleVisibility 속성을 'callback' 또는 'on'으로 설정해야 합니다. 이러한 함수를 호출한 후에 HandleVisibility 속성을 다시 'off'로 설정할 수 있습니다. 예를 들어, 다음 코드는 ginput 함수를 사용하여 두 점의 좌표를 식별하게 해 주는 콜백을 정의하는 방법을 보여줍니다.

function pushButtonCallback(app,event) 
    app.UIFigure.HandleVisibility = 'callback';
    ginput(2)
    app.UIFigure.HandleVisibility = 'off';
end

자동 크기 조정을 지원하지 않는 함수 사용하기

앱 디자이너 Figure는 기본적으로 크기 조정이 가능합니다. 즉, 앱을 실행하고 Figure 창의 크기를 조정할 때 Figure의 컴포넌트는 자동으로 크기가 조정되고 알맞게 재배치됩니다. 그러나 일부 그래픽스 함수는 자동 크기 조정을 지원하지 않습니다. 앱 디자이너에서 이러한 함수를 사용하려면 함수 출력값을 표시할 패널을 만들고 패널의 AutoResizeChildren 속성을 'off'로 설정하십시오. 컴포넌트 브라우저패널 탭이나 코드에서 이 속성을 설정할 수 있습니다.

예를 들어, subplot 함수는 자동 크기 조정을 지원하지 않습니다. 앱에서 이 함수를 사용하려면 다음과 같이 하십시오.

  1. 컴포넌트 라이브러리에서 패널 컴포넌트를 캔버스로 끌어서 놓습니다.

  2. 패널의 AutoResizeChildren 속성을 'off'으로 설정합니다.

  3. subplot 함수를 호출할 때 'Parent' 이름-값 인수를 사용하여 패널을 부모 컨테이너로 지정합니다. 또한, 좌표축을 저장할 출력 인수를 지정합니다.

  4. 좌표축을 첫 번째 입력 인수로 지정하여 플로팅 함수를 호출합니다.

app.Panel.AutoResizeChildren = 'off';
ax1 = subplot(1,2,1,'Parent',app.Panel);
ax2 = subplot(1,2,2,'Parent',app.Panel);
plot(ax1,[1 2 3 4])
plot(ax2,[10 9 4 7])

자동 크기 조정을 지원하지 않는 함수 중 일반적으로 사용되는 다른 함수로는 paretoplotmatrix 함수가 있습니다.

크기 조정 동작을 관리하는 방법에 대한 자세한 내용은 디폴트 자동 크기 조정 동작에 대한 대안 항목을 참조하십시오.

지원되지 않는 기능

일부 그래픽스 기능은 앱 디자이너에서 지원되지 않습니다. 아래 표에는 앱 작성 워크플로와 관련성이 높은 지원되지 않는 기능이 나열되어 있습니다.

범주지원되지 않는 기능
데이터 가져오기 및 저장

hgexport, hgload, hgsave, save, load, savefig, openfig, saveasprint 함수는 지원되지 않습니다.

saveas 함수나 print 함수 대신, exportapp 함수를 사용하여 앱 창의 내용을 저장합니다. 앱에서 플롯을 저장하려면 exportgraphics 함수 또는 copygraphics 함수를 사용하십시오.

uifigure를 사용하여 프로그래밍 방식으로 만든 Figure는 save, load, savefigopenfig 함수를 지원합니다.

웹 앱

앱 디자이너를 사용하여 배포용 웹 앱을 만드는 경우(MATLAB Compiler™ 필요) 추가적인 그래픽스 제한이 적용됩니다.

자세한 내용은 Web App Limitations and Unsupported Functionality (MATLAB Compiler) 항목을 참조하십시오.

참고 항목

|

관련 항목