Main Content

チャートの対話機能の制御

プロットされたデータを対話的に確認および編集して、データの視覚的な表示を改善したり、データに関するその他の情報を明らかにすることができます。使用できる操作は座標軸の内容によって異なりますが、通常は、ズーム、パン、回転、データ ヒント、データのブラシ選択、元の表示の復元などがあります。

一部のタイプの操作は、座標軸ツール バーでのみ使用できます。ツール バーは、チャート領域にカーソルを置くと座標軸の右上隅に表示されます。

Sample axes toolbar

他のタイプの操作は座標軸に組み込まれており、ドラッグしてパン、スクロールしてズームなどの動作を介して使用できます。これらの操作は、座標軸ツール バーの操作とは別に制御されます。

チャートを作成するときは、使用可能な操作のセットをいくつかの方法で制御できます。

R2018a およびそれ以前のリリースでは、座標軸ツール バーの代わりに、Figure ツール バーに操作オプションの多くが表示されます。また、以前のリリースでは、操作はいずれも座標軸に組み込まれていません。

座標軸ツール バーの表示または非表示

座標軸ツール バーを表示または非表示にするには、AxesToolbar オブジェクトの Visible プロパティをそれぞれ 'on' または 'off' に設定します。たとえば、現在の座標軸のツール バーを非表示にします。

ax = gca;
ax.Toolbar.Visible = 'off';

座標軸ツール バーのカスタマイズ

関数 axtoolbar および axtoolbarbtn を使用して、座標軸ツール バーで使用できるオプションをカスタマイズできます。

たとえば、座標軸のグリッド ラインの表示と非表示を切り替えるカスタムの状態ボタンを座標軸ツール バーに追加します。まず、mycustomstatebutton.m というプログラム ファイルを作成します。プログラム ファイル内で次を行います。

  • 乱数データをプロットします。

  • 関数 axtoolbar を使用して、ズームイン、ズームアウト、表示の復元の各オプションをもつ座標軸ツール バーを作成します。

  • 関数 axtoolbarbtn を使用して、ツール バーに空の状態ボタンを追加します。ToolbarStateButton オブジェクトを返します。

  • IconTooltipValueChangedFcn の各プロパティを設定して、状態ボタンのアイコン、ツール ヒントおよびコールバック関数を指定します。この例では grid アイコンを使用します。まず、これを mygridicon.png というイメージ ファイルとしてパス上に保存しなければなりません。

プログラム ファイルの実行後、アイコンをクリックしてグリッドラインの表示と非表示を切り替えます。

function mycustomstatebutton

plot(rand(5))
ax = gca;
tb = axtoolbar(ax,{'zoomin','zoomout','restoreview'});

btn = axtoolbarbtn(tb,'state');
btn.Icon = 'mygridicon.png';
btn.Tooltip = 'Grid Lines';
btn.ValueChangedFcn = @customcallback;

    function customcallback(src,event)
        switch src.Value
            case 'off'
                event.Axes.XGrid = 'off';
                event.Axes.YGrid = 'off';
                event.Axes.ZGrid = 'off';
            case 'on'
                event.Axes.XGrid = 'on';
                event.Axes.YGrid = 'on';
                event.Axes.ZGrid = 'on';
        end
    end

end

Line plot with grid lines

組み込み操作の有効化または無効化

組み込み操作のセットをチャート内で有効にするかどうかを制御するには、関数 disableDefaultInteractivity および関数 enableDefaultInteractivity を使用します。MATLAB® では、組み込み操作を自動的に無効にする場合があります。たとえば、特殊な機能をもつチャートの場合や、WindowScrollWheelFcn コールバックなど特定のコールバックを実装する場合に無効にされることがあります。

組み込み操作のカスタマイズ

ほとんどのタイプの座標軸に、特定の動作に対応する組み込み操作の既定のセットが含まれています。使用可能な操作は、座標軸の内容によって異なります。ほとんどの直交座標軸には、スクロールしてズーム、カーソルを合わせるかクリックしてデータ ヒントを表示、ドラッグしてパン (2 次元表示) または回転 (3 次元表示) の各操作が含まれています。既定のセットを新しい操作セットに置き換えることはできますが、既定のセットの操作にアクセスしたり、変更したりすることはできません。

既定の操作を置き換えるには、座標軸の Interactions プロパティを操作オブジェクトの配列に設定します。操作オブジェクトの互換性のある組み合わせを、以下の表から選択します。すべての操作を座標軸から削除するには、プロパティを空の配列 ([]) に設定します。

操作オブジェクト説明互換性のある操作
panInteractionドラッグによるチャート内のパン。regionZoomInteraction および rotateInteraction を除くすべて
rulerPanInteractionドラッグによる座標軸のパン。すべて
zoomInteractionスクロールまたはピンチ操作によるズーム。すべて
regionZoomInteractionドラッグによる四角形領域の拡大
(2 次元直交チャートのみ)
panInteraction および rotateInteraction を除くすべて
rotateInteractionドラッグによるチャートの回転。panInteraction および regionZoomInteraction を除くすべて
dataTipInteractionカーソル配置、クリック、またはタップによるデータ ヒントの表示。すべて

たとえば、1000 個の散布点を含むプロットを作成します。

x = 1:500;
y = randn(1,500);
y2 = 5*randn(1,500) + 10;
plot(x,y,'.',x,y2,'.')

Scatter plot displaying two sets of data using two colors

既定では、このプロットには、チャート領域内でのドラッグによるパンを含む操作セットが含まれています。しかし、プロットには稠密な点の集まりがあるため、操作セットにプロットの特定領域を拡大できる操作が含まれているほうが便利かもしれません。regionZoomInteraction オブジェクトはこの機能を提供します。現在の座標軸の既定の操作セットを、regionZoomInteraction オブジェクトを含む配列に置き換えます。

ax = gca;
ax.Interactions = [zoomInteraction regionZoomInteraction rulerPanInteraction];

これで、プロット領域内でのドラッグによって、拡大対象となる四角形の関心領域が定義されます。

The same scatter plot with a rectangle surrounding some points

アプリの操作の動作のカスタマイズ

App Designer の座標軸および関数 uifigure で作成した Figure の座標軸用に座標軸操作の特定の側面の動作をカスタマイズできます。座標軸の操作をカスタマイズするには、座標軸の InteractionOptions プロパティに関連付けられた CartesianAxesInteractionOptions オブジェクトのプロパティ値を変更します。

たとえば、関数 uifigure を使用して作成された Figure の座標軸操作をカスタマイズします。座標軸のサポートされる操作を変更します。PanSupported プロパティを "off" として指定して、座標軸でパン操作がサポートされないようにします。

f = uifigure;
ax = uiaxes(f);
plot(ax,magic(4));
ax.InteractionOptions.PanSupported = "off";

座標軸のツール バーには、[パン] ボタン が含まれないようになりました。プロットをクリックしてドラッグしても、座標軸の表示はパンされません。

Plot with axes toolbar showing all the default buttons excluding the Pan button

次に、ズーム操作を x 次元のみに制約します。

ax.InteractionOptions.LimitsDimensions = "x";

これで、LimitsDimensions プロパティに関連するすべてのズーム操作は x 次元に制約されるようになりました。たとえば、座標軸のズーム モードを有効にします。

zoom(ax,"on")
次に、プロット内でドラッグ、スクロール、またはクリックしてズームします。CartesianAxesInteractionOptionsLimitsDimensions プロパティにより、ズームが x 次元に制約されます。

Selection range along x-axis for zooming

座標軸にズームインした後に、座標軸の表示を復元します。表示を復元する前に、表示を復元するために既定の x 軸の制限をクエリします。

restoreX = ax.InteractionOptions.RestoredXLimits
restoreX =`

     1     4

x 軸の復元の制限をカスタマイズします。

ax.InteractionOptions.RestoredXLimits = [2 3];

次に、座標軸ツール バーにある [表示の復元] ボタン をクリックします。x 軸の制限は [2 3] です。

Plot with x-axis limits [2 3]

参考

関数

プロパティ

関連するトピック