ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

linkdata

変数が変わったときに自動的にグラフを更新

構文

linkdata on
linkdata off
linkdata
linkdata(figure_handle,...)
linkobj = linkdata(figure_handle)

説明

linkdata on は、現在の Figure のデータ リンクをオンにします。

linkdata off はデータ リンクをオフにします。

linkdata だけの場合は、データのリンクの状態を切り替えます。

linkdata(figure_handle,...) は、指定された Figure ハンドルに関数を適用します。

linkobj = linkdata(figure_handle) は、指定された Figure の linkdata オブジェクトを返します。オブジェクトは、1 つの読み取り専用プロパティ Enable をもち、それはリンクされた Figure の状態に応じて、'on' または 'off' に設定されます。

データ リンクは、Figure ウィンドウ内のグラフをそれぞれの XDataSourceYDataSource、および ZDataSource プロパティを介してベース ワークスペースまたは関数のワークスペースにある変数に関連付けます。Figure のデータ リンクをオンにすると、MATLAB® は、現在の (ベースまたは関数呼び出し側) ワークスペース内の変数を、影響を受けた Figure 内のグラフの XDataYData および ZData プロパティと比較し、一致させようとします。一致が見つかると、グラフの該当する XDataSourceYDataSourceZDataSource プロパティは、一致する変数に設定されます。

リンクされた変数へのその後の変更は、それらをデータ ソースとして使用するグラフで反映され、リンクされた変数を変数エディターで表示する場合は変数エディターで反映されます。逆に、プロットされたデータ値が変数エディターのコマンド ラインまたはブラシ選択ツールを使用して変更された (データ点の削除や置換など) 場合、データ点にリンクされているワークスペース変数に直ちに反映されます。

グラフを含む Fiugre がリンクされ、XDataSourceYDataSourceZDataSource プロパティとして識別される変数の値がワークスペースで変更された場合、その Figure または他のリンクされた Figure に表示されるすべてのグラフは自動的に更新されます。この処理は、変数を変更したときに対応する Figure の関数 refreshdata が自動的に呼び出される場合と同じです。

リンクされた Figure ウィンドウは、ウィンドウの一番上のリンク プロットのメッセージ バーに表示されます。Figure の関数 linkdataoff になっている場合、リンク プロットのメッセージ バーは削除されます。関数 linkdata がグラフのデータ ソースをリンクされた Figure で明確に表示できない場合、リンク プロットのメッセージ バーでこのことを報告し、データ ソースを識別できるようにします。メッセージ バーには、警告アイコンと [データ ソースをもつグラフィックスがありません] というメッセージだけでなく、[修正する] プロンプトも表示されます。[修正する] をクリックすると、グラフで使用される変数名とデータ ソースの範囲を識別するための [データ ソース プロパティの指定] ダイアログ ボックスが開きます。

例 1

変数を 2 つ作成して、それらを面グラフとしてプロットしてそのプロットを 2 つの変数にリンクさせます。

x = 1:20;
y = rand(20,3);
area(x,y)
linkdata on

ワークスペース内のリンクされた変数 y の値を変更します。

y(10,:) = 0;
この面グラフはただちに更新されます。

例 2

返された linkdata オブジェクトに基づき、Figure がリンクされていない場合は削除します。

fig = figure;
ld = linkdata(fig)
ld = 
     graphics.linkdata

if strcmp(ld.Enable,'off')
    delete(fig)
end

例 3

プロット関数が複素変数を表示できる場合は、プロットをリンクできます。これを行うには、データ ソースを式として記述し、変数の実数部と虚数部を切り離す必要があります。以下に例を示します。

x = eig(randn(20,20));
whos
  Name       Size      Bytes  Class     Attributes
  x         20x1         320  double    complex   
の結果は複素ベクトルになります。関数 plot を使用して実数部を x、虚数部を y と表示し、グラフを変数にリンクします。
plot(x)
linkdata
ただし、関数 linkdata はグラフのデータ ソースを明白に識別できないため、[データ ソース プロパティの指定] ダイアログ ボックスに「real(x)」および「imag(x)」と入力しなければなりません。[データ ソース プロパティの指定] ダイアログ ボックスは、リンク プロットのメッセージ バーの [修正する] をクリックすると表示されます。

プロットするときにデータ ソース名を指定すると、ダイアログ ボックスに入力する必要はありません。

plot(x,'XDataSource','real(x)','YDataSource','imag(x)')

後に x の値をプログラミングまたは手動で変更すると、プロットは、それに応じて、更新されます。

メモ

データのブラシ選択はリンクされた複雑なデータのプロットで使用できますが、ブラシのマークはブラシ選択するプロットにのみ表示され、他のプロットまたは変数エディターでは表示されません。これは、real(x)imag(x) などデータ ソースとして指定する関数の呼び出しが、グラフ化されたデータをブラシ選択するときに解釈されないためです。

ヒント

リンクできる変数タイプ

関数 linkdata を使用して、任意のクラス (グラフ作成関数がプロットできる場合は complex を含む) のスカラー、ベクトル、および行列数値変数、言い換えると関数 isnumerictrue になるデータにグラフを関連付けることができます。複素数変数をリンクする方法は、例 3を参照してください。プロットを構造体内の数値フィールドにリンクすることもできます。たとえば、sqrt(y)+1 のように、MATLAB 式をデータ ソースとして指定できます。

解除したリンクの復元

評価時に、XDataSourceYDataSource、または ZDataSource プロパティの変数が現在のワークスペースの設定と一致せず、対応する XDataYData、または ZData プロパティが応答できない場合、リンクされたプロットのデータは更新されません。グラフ内のオブジェクトの外観は影響を受けないため、グラフィックス オブジェクトにはリンクの解除は示されません。代わりに、リンク プロットのメッセージ バーには警告アイコンと [切れているリンク] メッセージと共に、[データソースを指定] ダイアログ ボックスを開く [編集] ボタンが表示されます。

データの変更にすばやくリンク

関数 linkdata は約 0.5 秒間隔でデータの更新をバッファーに保存し、プロットにディスパッチします。このため、データのリンクは、1 秒に 2 回以下で強制的に実行するループでデータ値を更新しない限り、変更をスムーズに更新できません。

リンクの更新をバッファーするときに、関数 linkdata がモニターするデータ ストリームの変更を検出しないことがあります。関数 assignin または evalin を使用してワークスペース変数を更新する関数を実行する場合、関数 linkdata は、値を変更するがワークスペース変数のサイズとクラスを変更しない更新を処理できないことがあります。このような障害は、関数自体がプロットを更新する場合にのみ発生します。

ブラシ選択されたグラフのリンク

データ ソースをブラシ選択されたグラフにリンクする場合、ブラシ選択のマークが変更または非表示になります。これは、グラフ内のワークスペース変数がブラシ選択される観測値を指定し、グラフィカルなデータ (YData など) に適用された注釈のブラシ選択に優先するためです。詳細は、関数 brush のリファレンス ページのデータのリンクのデータのブラシ選択に対する影響を参照してください。