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');

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

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

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

ほとんどの 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)

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

rng(0,'twister')
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)

pareto
plotmatrix

次の手順に従います。

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

  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)

App Designer の Figure 内での注釈の表示

R2020a 以降、関数 annotation で作成された注釈は App Designer の Figure でサポートされます。注釈を作成するには、UI Figure を最初の入力引数として指定して、関数 annotation を呼び出します。以下に例を示します。

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

サポートされない関数

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

カテゴリサポートなし
アニメーション
データの取得と保存

関数 saveas の代わりに、関数 exportgraphics または関数 copygraphics を使用してグラフィックスをアプリに保存します。

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

ユーティリティ

関数 print の代わりに、関数 exportgraphics または関数 copygraphics を使用してグラフィックスをアプリに保存します。

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

グリッド レイアウト マネージャーまたはスクロール可能コンテナーの座標軸
  • グリッド レイアウト マネージャーおよびスクロール可能コンテナーでは、axespolaraxesgeoaxes や、Figure の子となり得るチャート (heatmapgeobubblestackedplot など) はサポートされません。

  • uiaxes にこれらの制限はありません。

回避方法:

  • グリッド レイアウト マネージャーの制限を回避するには、座標軸またはチャートをパネルに配置し、AutoResizeChildren プロパティを 'off' に設定します。次に、そのパネルをグリッドに配置します。

  • スクロール可能コンテナーの制限を回避するには、座標軸またはチャートをパネルに配置し、Scrollable プロパティおよび AutoResizeChildren プロパティを 'off' に設定します。次に、そのパネルをスクロール可能コンテナーに配置します。

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

参考

|

関連するトピック