Main Content

グラフの Figure および座標軸の準備

MATLAB プロット関数の動作

MATLAB® のプロット関数は、Figure と座標軸がなければ新しいものを作成し、あればそれらを再利用します。既存の座標軸を再利用する場合、MATLAB は以下を行います。

  • 座標軸からグラフィックス オブジェクトをクリア

  • 座標軸プロパティの大部分を既定値にリセット

  • 新しいデータに基づいて新しい座標軸の範囲を計算

プロット関数によりグラフが作成される場合、以下が可能です。

  • グラフに対して Figure と座標軸を作成し、そのグラフに必要なプロパティを設定 (現在の Figure がない場合の既定動作)

  • 既存の Figure と座標軸を再利用し、必要に応じて座標軸プロパティをクリア、リセット (グラフがある場合の既定動作)

  • プロパティはリセットせずに、既存のグラフに新しいデータ オブジェクトを追加 (holdon の場合)

Figure および座標軸の NextPlot プロパティは、MATLAB プロット関数の動作をコントロールします。

NextPlot プロパティによる動作のコントロール方法

MATLAB プロット関数は、新しいグラフを描画する前に、Figure および座標軸の NextPlot プロパティに基づいて Figure および座標軸を追加する、クリアする、あるいはクリアしてからリセットするかどうかを決定します。低水準のオブジェクト作成関数は、NextPlot プロパティをチェックしません。これらの関数は、新しいグラフィックス オブジェクトを、単に現在の Figure と座標軸に追加するだけです。

次の表は、NextPlot プロパティの取り得る値をまとめています。

NextPlot

Figure

座標軸

new

新規 Figure を作成し、現在の Figure として使用します。

座標軸に対するオプションではありません。

add

現在の Figure をクリアしたり、リセットすることなく、新しいグラフィックス オブジェクトを追加します (既定の設定)。

現在の座標軸をクリアしたり、リセットしたりすることなく、新しいグラフィックス オブジェクトを追加します。

replacechildren

新しいオブジェクトを追加する前に、ハンドルが非表示になっていないすべての axes オブジェクトを削除します。Figure のプロパティをリセットしません。clf と同じです。

新しいグラフィックス オブジェクトを追加する前に、ハンドルが非表示になっていないすべての座標軸の子オブジェクトを削除します。座標軸のプロパティをリセットしません。cla と同じです。

replace

新しいオブジェクトを追加する前に、すべての axes オブジェクトを削除し、Figure のプロパティを既定値にリセットします。clfreset と同じです。

新しいオブジェクトを追加する前に、すべての子オブジェクトを削除し、座標軸のプロパティを既定値にリセットします。clareset と同じです (既定の設定)。

プロット関数は関数 newplot を呼び出して、該当する座標軸のハンドルを取得します。

既定のシナリオ

Figure の NextPlot プロパティが add で、座標軸の NextPlot プロパティが replace である既定の状況を考えます。newplot を呼び出すと、次の動作が行われます。

  1. 現在の Figure の NextPlot プロパティの値 (つまり、add) がチェックされます。

  2. MATLAB が現在の Figure を変更せずにその中に描画できることが判定されます。現在の Figure が存在しない場合は、newplot により現在の Figure が作成されますが、その NextPlot プロパティは再チェックされません。

  3. 現在の座標軸の NextPlot プロパティの値 (つまり replace) をチェックし、すべてのグラフィックス オブジェクトを座標軸から削除し (PositionUnits を除く)、すべての座標軸プロパティを既定値にリセットして、現在の座標軸のハンドルを返します。現在の座標軸が存在しない場合には、newplot により現在の座標軸が作成されますが、その NextPlot プロパティは再チェックされません。

  4. すべてのグラフィックス オブジェクトを座標軸から削除し (PositionUnits を除く)、すべての座標軸プロパティを既定値にリセットして、現在の座標軸のハンドルを返します。現在の座標軸が存在しない場合には、newplot により現在の座標軸が作成されますが、その NextPlot プロパティは再チェックされません。

関数 hold と NextPlot プロパティ

関数 hold により、NextPlot プロパティに簡単にアクセスできます。グラフにオブジェクトを追加する際、他のオブジェクトを削除したりプロパティをリセットしないようにするには、hold on を使用します。

  • hold on — Figure と座標軸の NextPlot プロパティを add に設定します。線グラフは ColorOrder および LineStyleOrder プロパティ値を繰り返し続けます。

  • hold off — 座標軸の NextPlot プロパティを replace に設定します。

holdonoff かを判定するには、ishold を使用します。

ユーザーが記述したプロット関数の動作のコントロール

MATLAB に用意されている関数 newplot により、NextPlot プロパティの設定に準拠するプロット関数を簡単に記述できます。

newplot は、NextPlot プロパティの値をチェックし、これらの値に基づいて適切な動作を実行します。newplot は、オブジェクト作成関数を呼び出す任意の関数の最初の部分に配置します。

記述した関数で newplot を呼び出すと、newplot により、まず Figure の NextPlot プロパティがクエリされます。このプロパティ値に基づいて、newplot は次の表に示されているアクションを実行します。

Figure の NextPlot プロパティ値関数 newplot の動作

Figure が存在しない

Figure を作成し、現在の Figure にします。

add

Figure を現在の Figure にします。

new

新しい Figure を作成し、現在の Figure にします。

replacechildren

Figure の子オブジェクト (axes オブジェクトとそれらの下位オブジェクト) を削除し、この Figure を現在の Figure にします。

replace

Figure の子オブジェクトを削除し、Figure のプロパティを既定値にリセットして、この Figure を現在の Figure にします。

次に、newplot は現在の座標軸の NextPlot プロパティをチェックします。このプロパティ値に基づいて、newplot は次の表に示されているアクションを実行します。

座標軸の NextPlot プロパティ値関数 newplot の動作

現在の Figure に座標軸がない

座標軸を作成し、現在の座標軸にします。

add

座標軸を現在の座標軸にし、そのハンドルを返します。

replacechildren

座標軸の子オブジェクトを削除し、この座標軸を現在の座標軸にします。

replace

座標軸の子オブジェクトを削除し、座標軸のプロパティを既定値にリセットして、この座標軸を現在の座標軸にします。