이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
앱 디자이너에서 그래픽스를 표시하려면 일반적으로 MATLAB® 명령줄에서 사용하는 그것과는 다른 작업 흐름이 필요합니다. 이 작업 흐름과 몇 가지 특수한 사례를 이해하고 나면 거의 모든 유형의 플롯을 표시하는 데 필요한 함수를 호출하는 방법을 알 수 있습니다.
MATLAB(및 MATLAB 툴박스)의 그래픽스 함수 대부분에는 대상 좌표축 또는 부모 객체를 지정하는 데 사용할 수 있는 인수가 있습니다. 이 인수는 대부분의 상황에서는 선택 사항이지만, 앱 디자이너에서 이런 그래픽스 함수를 호출하는 경우에는 이 인수를 반드시 지정해야 합니다. 그 이유는 대부분의 상황에서 MATLAB은 기본적으로 gcf
함수 또는 gca
함수를 사용하여 작업에 사용할 대상 객체를 가져오기 때문입니다. 그러나 앱 디자이너 Figure의 HandleVisibility
속성은 기본적으로 'off'
로 설정되어 있습니다. 즉, gcf
는 앱 디자이너 Figure를 반환하지 않고 gca
는 앱 디자이너 Figure 내에서 어떠한 좌표축도 반환하지 않습니다. 결과적으로 대상 좌표축 또는 부모 객체의 인수를 생략하면 예상치 않은 결과가 생성될 수 있습니다.
다음 코드는 두 개의 선을 플로팅할 때 대상 좌표축을 지정하는 방법을 보여줍니다. plot
및 hold
에 전달되는 첫 번째 인수는 app.UIAxes
이며, 이는 앱 디자이너 좌표축의 디폴트 이름입니다.
plot(app.UIAxes,[1 2 3 4],'-r'); hold(app.UIAxes); plot(app.UIAxes,[10 9 4 7],'--b');
마찬가지로, 첫 번째 인수를 app.UIFigure
로 지정하여 대상 Figure를 지정할 수 있습니다. 예를 들어, 다음 코드는 앱 디자이너 Figure에 화살표 주석을 만듭니다.
x = [0.3 0.5];
y = [0.6 0.5];
annotation(app.UIFigure,'arrow',x,y)
일부 함수(예: imshow
와 triplot
)는 이름-값 쌍 인수를 사용하여 대상 객체를 지정합니다. 예를 들어, 다음 코드는 앱 디자이너에서 imshow
함수를 호출하는 방법을 보여줍니다.
imshow('peppers.png','Parent',app.UIAxes);
ginput
함수와 gtext
함수는 대상 Figure를 지정하는 인수를 갖지 않습니다. 따라서 이러한 함수를 호출하기 전에 앱 디자이너 Figure의 HandleVisibility
속성을 'callback'
또는 'on'
으로 설정해야 합니다. 이러한 함수를 호출한 후에 HandleVisibility
속성을 다시 'off'
로 설정할 수 있습니다. 예를 들어, 다음 코드는 ginput
함수를 사용하여 두 점의 좌표를 식별할 수 있는 콜백을 정의하는 방법에 대해 보여줍니다.
function pushButtonCallback(app,event) app.UIFigure.HandleVisibility = 'callback'; ginput(2) app.UIFigure.HandleVisibility = 'off'; end
pareto
, plotmatrix
및 subplot
을 비롯한 일부 함수는 자동 크기 조정 동작을 지원하지 않습니다. 이러한 함수를 사용하려면 먼저 부모 컨테이너의 AutoResizeChildren
속성을 'off'
로 설정하십시오.
app.UIFigure.AutoResizeChildren = 'off';
pareto(app.UIAxes,[10 20 40 40])
앱 디자이너 좌표축(uiaxes
객체)을 사용하여 대부분의 2차원 플롯과 3차원 플롯을 생성할 수 있습니다. R2018b부터는 추가적으로 다음 표에 나열된 플롯을 생성할 수 있습니다. 이러한 플롯 중 대부분은 앱에서 다른 유형의 부모 객체 및 추가적인 코드를 필요로 합니다. 이러한 플롯은 모두 기본적으로 정규화된 위치 단위를 사용합니다.
함수 | 코딩 관련 세부 지침 |
---|---|
polarplot polarhistogram polarscatter compass |
theta = 0:0.01:2*pi; rho = sin(2*theta).*cos(2*theta); pax = polaraxes(app.Panel); polarplot(pax,theta,rho) 또는 비슷한 방식으로 나침반 플롯을 만듭니다. M = randn(20,20); Z = eig(M); app.Axes = axes(app.Panel); compass(app.Axes,Z) |
subplot | 다음 단계를 따르십시오.
예를 들어, 다음과 같이 합니다. 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 | 패널에 타일 형식 차트 레이아웃을 만들고 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) |
geobubble heatmap parallelplot scatterhistogram stackedplot wordcloud | 이러한 함수를 호출할 때 부모 컨테이너(예: 예를 들어, 다음과 같이 합니다. h = heatmap(app.UIFigure,rand(10)); |
geoplot geoscatter geodensityplot |
latSeattle = 47 + 37/60; lonSeattle = -(122 + 20/60); gx = geoaxes(app.UIFigure); geoplot(gx,latSeattle,lonSeattle) |
R2020b부터 일부 그래픽스 기능이 앱 디자이너에서 지원되지 않습니다. 아래 표에는 대부분의 앱 작성 워크플로와 관련된 기능이 나열되어 있습니다.
범주 | 지원되지 않는 기능 |
---|---|
애니메이션 |
|
데이터 가져오기 및 저장 |
|
유틸리티 |
|
권장되지 않는 함수 | |
속성 |
|