Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

App Designer でのグラフィックスの表示

App Designer でグラフィックスを表示するには、MATLAB® コマンド ラインで通常使用するのとは異なるワークフローが必要です。このワークフローといくつかの特殊なケースを理解すれば、ほぼすべての種類のプロットを表示するために必要な関数の呼び出し方法がわかります。

グラフィックス関数の呼び出し

MATLAB (および MATLAB ツールボックス) のグラフィックス関数の多くには、ターゲット座標軸または親オブジェクトを指定するための引数があります。この引数はほとんどのコンテキストで省略可能ですが、App Designer でこれらの関数を呼び出す場合は、その引数を指定しなければなりません。その理由は、多くの場合、MATLAB は既定で関数 gcf または関数 gca を使用して演算のターゲット オブジェクトを取得するためです。ただし、App Designer の Figure の HandleVisibility プロパティは既定で 'off' に設定されます。つまり、gcf は App Designer の Figure を返さず、gca は App Designer の Figure 内に座標軸を返しません。そのため、ターゲットの座標軸または親オブジェクトの引数を省略すると、予期しない結果が発生する可能性があります。

次のコードは、2 行をプロットするときにターゲット座標軸を指定する方法を示しています。plothold に渡される最初の引数は app.UIAxes で、これは App Designer の座標軸の既定の名前です。

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

同様に、最初の引数を app.UIFigure に指定することで、ターゲット Figure を指定できます。たとえば、次のコードは App Designer の Figure 内に矢印の注釈を作成します。

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

一部の関数 (imshowtriplot など) では、ターゲット オブジェクトを指定する名前と値のペアの引数を使用します。たとえば、次のコードは、App Designer で関数 imshow を呼び出す方法を示しています。

imshow('peppers.png','Parent',app.UIAxes);
関数に応じて、ターゲット オブジェクトを最初の引数として指定するか、名前と値のペアの引数を指定します。適切な引数を決定するには、特定の使用する関数のドキュメントを参照してください。

関数 ginput と関数 gtext には、ターゲット Figure を指定するための引数がありません。そのため、これらの関数を呼び出す前に、App Designer の Figure の HandleVisibility プロパティを 'callback' または 'on' に設定しなければなりません。これらの関数を呼び出した後、HandleVisibility プロパティを 'off' に戻すことができます。たとえば、次のコードは、関数 ginput を使用して 2 つの点の座標を特定できるコールバックの定義方法を示しています。

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

paretoplotmatrixsubplot など一部の関数では、自動サイズ変更の動作はサポートされません。これらの関数を使用する前に、親コンテナーの AutoResizeChildren プロパティを 'off' に設定します。

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

他のタイプの座標軸を使用したプロットの表示

ほとんどの 2 次元および 3 次元プロットは、App Designer の座標軸 (uiaxes オブジェクト) を使用して作成できます。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)

あるいは、類似の方法でコンパス プロットを作成します。

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

subplot

次の手順に従います。

  1. 親コンテナーの AutoResizeChildren プロパティを 'off' に設定します。サブプロットでは、自動的なサイズ変更の動作がサポートされていません。このプロパティは、App Designer の [コンポーネント ブラウザー][インスペクター] タブで、またはコードで設定できます。

  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)

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)

サポートされない関数

R2020b 現在、一部のグラフィックス機能は App Designer でサポートされていません。次の表に、ほとんどのアプリ作成ワークフローに関連する機能を示します。

カテゴリサポートなし
アニメーション
  • たとえば、movie など。

データの取得と保存

アプリ ウィンドウの内容を保存するには、関数 saveas ではなく関数 exportapp を使用します。プロットをアプリに保存するには、関数 exportgraphics または関数 copygraphics を使用します。

uifigure を使ってプログラムにより作成された Figure では、関数 saveloadsavefig、および openfig がサポートされます。

ユーティリティ

アプリ ウィンドウの内容を保存するには、関数 print ではなく関数 exportapp を使用します。プロットをアプリに保存するには、関数 exportgraphics または関数 copygraphics を使用します。

非推奨の関数
  • たとえば ezplot および hist などです。

プロパティ
  • App Designer の TableMenuPanelTabTabGroupButtonGroup などのコンポーネント オブジェクトは、関数 figure で作成されたアプリとは異なるプロパティをサポートします。App Designer でサポートされているコンポーネントのリストと、それらのプロパティのページへのリンクについては、アプリ作成コンポーネントを参照してください。

参考

|

関連するトピック