이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

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

앱 디자이너에서 그래픽스를 표시하려면 일반적으로 MATLAB® 명령줄에서 사용하는 그것과는 다른 작업 흐름이 필요합니다. 이 작업 흐름과 몇 가지 특수한 사례를 이해하고 나면 거의 모든 유형의 플롯을 표시하는 데 필요한 함수를 호출하는 방법을 알 수 있습니다.

그래픽스 함수 호출하기

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

다음 코드는 두 개의 선을 플로팅할 때 대상 좌표축을 지정하는 방법을 보여줍니다. plothold에 전달되는 첫 번째 인수는 app.UIAxes이며, 이는 앱 디자이너 좌표축의 디폴트 이름입니다.

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

일부 함수(예: imshowtriplot)는 이름-값 쌍 인수를 사용하여 대상 객체를 지정합니다. 예를 들어, 다음 코드는 앱 디자이너에서 imshow 함수를 호출하는 방법을 보여줍니다.

imshow('peppers.png','Parent',app.UIAxes);
대상 객체를 첫 번째 인수로 지정할지 아니면 이름-값 쌍 인수로 지정할지는 함수에 따라 다릅니다. 적합한 인수를 파악하려면 사용할 특정 함수에 대한 도움말 문서를 참조하십시오.

다른 유형의 좌표축을 사용하여 플롯 표시하기

앱 디자이너 좌표축(uiaxes 객체)을 사용하여 대부분의 2차원 플롯과 3차원 플롯을 생성할 수 있습니다. R2018b부터는 추가적으로 다음 표에 나열된 플롯을 생성할 수 있습니다. 이러한 플롯 중 대부분은 앱에서 다른 유형의 부모 객체 및 추가적인 코드를 필요로 합니다. 이러한 플롯은 모두 기본적으로 정규화된 위치 단위를 사용합니다.

함수코딩 관련 세부 지침
polarplot
polarhistogram
polarscatter
compass

polaraxes 함수를 호출하여 극좌표 좌표축을 생성합니다. 부모 컨테이너를 첫 번째 입력 인수(예: app.Panel)로 지정합니다. 그런 다음 극좌표 좌표축을 첫 번째 인수로 지정하여 플로팅 함수를 호출합니다. 예를 들어, 다음과 같이 합니다.

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

또는 비슷한 방식으로 나침반 플롯을 만듭니다.

rng(0,'twister')
M = randn(20,20);
Z = eig(M);
app.Axes = axes(app.Panel);
compass(app.Axes,Z)

subplot

다음 단계를 따르십시오.

  1. 부모 컨테이너의 AutoResizeChildren 속성을 'off'로 설정합니다. 서브플롯은 자동 크기 조정 동작을 지원하지 않습니다. 앱 디자이너 구성요소 브라우저인스펙터 탭이나 코드에서 이 속성을 설정할 수 있습니다.

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

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

예를 들어, 다음과 같이 합니다.

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

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)

pareto
plotmatrix

다음 단계를 따르십시오.

  1. 부모 컨테이너의 AutoResizeChildren 속성을 'off'로 설정합니다. 이러한 플롯은 자동 크기 조정 동작을 지원하지 않습니다. 앱 디자이너 구성요소 브라우저인스펙터 탭이나 코드에서 이 속성을 설정할 수 있습니다.

  2. axes 함수를 호출하여 좌표축을 생성합니다. 부모 컨테이너를 첫 번째 입력 인수(예: app.UIFigure)로 지정합니다.

  3. 좌표축을 첫 번째 입력 인수로 지정하여 pareto 함수나 plotmatrix 함수를 호출합니다.

예를 들어, 다음과 같이 합니다.

app.UIFigure.AutoResizeChildren = 'off';
ax = axes(app.UIFigure);
pareto(ax,[10 20 40 40])

geobubble
heatmap
parallelplot
scatterhistogram
stackedplot
wordcloud

이러한 함수를 호출할 때 부모 컨테이너(예: app.UIFigure)를 지정합니다.

예를 들어, 다음과 같이 합니다.

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

geoplot
geoscatter
geodensityplot

geoaxes 함수를 호출하여 지리적 좌표축을 생성합니다. 부모 컨테이너를 첫 번째 입력 인수(예: app.UIFigure)로 지정합니다. 그런 다음 좌표축을 첫 번째 입력 인수로 지정하여 플로팅 함수를 호출합니다. 예를 들어, 다음과 같이 합니다.

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

앱 디자이너 Figure에 주석 표시하기

R2020a부터는 앱 디자이너 Figure에서 annotation 함수로 생성된 주석이 지원됩니다. 주석을 생성하려면 첫 번째 입력 인수로 UI Figure를 지정하여 annotation 함수를 호출하십시오. 예를 들어, 다음과 같이 합니다.

x = [0.3 0.5];
y = [0.6 0.5];
annotation(app.UIFigure,'arrow',x,y)

지원되지 않는 기능

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

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

saveas 함수 대신 exportgraphics 함수 또는 copygraphics 함수를 사용하여 앱에 그래픽스를 저장합니다.

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

유틸리티

print 함수 대신 exportgraphics 함수 또는 copygraphics 함수를 사용하여 앱에 그래픽스를 저장합니다.

권장되지 않는 함수
그리드 레이아웃 관리자 또는 스크롤 가능한 컨테이너에서의 좌표축
  • 그리드 레이아웃 관리자와 스크롤 가능한 컨테이너는 axes, polaraxes, geoaxes, 또는 Figure의 자식일 수 있는 차트(예: heatmap, geobubble 또는 stackedplot)를 지원하지 않습니다.

  • uiaxes에는 이러한 제한 사항이 없습니다.

우회적 해결 방법:

  • 그리드 레이아웃 관리자 제한 사항에 제약을 받지 않으려면 좌표축 또는 차트를 AutoResizeChildren 속성이 'off'로 설정된 패널에 배치하십시오. 그런 다음 패널을 그리드에 배치하십시오.

  • 스크롤 가능한 컨테이너 제한 사항에 제약을 받지 않으려면 좌표축 또는 차트를 Scrollable 속성과 AutoResizeChildren 속성이 'off'로 설정된 패널에 배치하십시오. 그런 다음 패널을 스크롤 가능한 컨테이너에 배치하십시오.

속성
  • Table, Menu, Panel, Tab, TabGroup, ButtonGroup과 같은 구성요소 객체가 앱 디자이너에서 지원하는 속성은 figure 함수로 생성된 앱에서 지원하는 속성과 다릅니다. 앱 디자이너에서 지원되는 구성요소 목록과 해당 속성 페이지에 대한 링크는 앱 작성 구성요소 항목을 참조하십시오.

참고 항목

|

관련 항목