グラフの Figure および座標軸の準備
MATLAB プロット関数の動作
MATLAB® のプロット関数は、Figure と座標軸がなければ新しいものを作成し、あればそれらを再利用します。既存の座標軸を再利用する場合、MATLAB は以下を行います。
座標軸からグラフィックス オブジェクトをクリア
座標軸プロパティの大部分を既定値にリセット
新しいデータに基づいて新しい座標軸の範囲を計算
プロット関数によりグラフが作成される場合、以下が可能です。
グラフに対して Figure と座標軸を作成し、そのグラフに必要なプロパティを設定 (現在の Figure がない場合の既定動作)
既存の Figure と座標軸を再利用し、必要に応じて座標軸プロパティをクリア、リセット (グラフがある場合の既定動作)
プロパティはリセットせずに、既存のグラフに新しいデータ オブジェクトを追加 (
hold
がon
の場合)
Figure および座標軸の NextPlot
プロパティは、MATLAB プロット関数の動作をコントロールします。
NextPlot プロパティによる動作のコントロール方法
MATLAB プロット関数は、新しいグラフを描画する前に、Figure および座標軸の NextPlot
プロパティに基づいて Figure および座標軸を追加する、クリアする、あるいはクリアしてからリセットするかどうかを決定します。低水準のオブジェクト作成関数は、NextPlot
プロパティをチェックしません。これらの関数は、新しいグラフィックス オブジェクトを、単に現在の Figure と座標軸に追加するだけです。
次の表は、NextPlot
プロパティの取り得る値をまとめています。
NextPlot | Figure | 座標軸 |
---|---|---|
| 新規 Figure を作成し、現在の Figure として使用します。 | 座標軸に対するオプションではありません。 |
| 現在の Figure をクリアしたり、リセットすることなく、新しいグラフィックス オブジェクトを追加します (既定の設定)。 | 現在の座標軸をクリアしたり、リセットしたりすることなく、新しいグラフィックス オブジェクトを追加します。 |
| 新しいオブジェクトを追加する前に、ハンドルが非表示になっていないすべての axes オブジェクトを削除します。Figure のプロパティをリセットしません。 | 新しいグラフィックス オブジェクトを追加する前に、ハンドルが非表示になっていないすべての座標軸の子オブジェクトを削除します。座標軸のプロパティをリセットしません。 |
| 新しいオブジェクトを追加する前に、すべての axes オブジェクトを削除し、Figure のプロパティを既定値にリセットします。 | 新しいオブジェクトを追加する前に、すべての子オブジェクトを削除し、座標軸のプロパティを既定値にリセットします。 |
プロット関数は関数 newplot
を呼び出して、該当する座標軸のハンドルを取得します。
既定のシナリオ
Figure の NextPlot
プロパティが add
で、座標軸の NextPlot
プロパティが replace
である既定の状況を考えます。newplot
を呼び出すと、次の動作が行われます。
現在の Figure の
NextPlot
プロパティの値 (つまり、add
) がチェックされます。MATLAB が現在の Figure を変更せずにその中に描画できることが判定されます。現在の Figure が存在しない場合は、
newplot
により現在の Figure が作成されますが、そのNextPlot
プロパティは再チェックされません。現在の座標軸の
NextPlot
プロパティの値 (つまりreplace
) をチェックし、すべてのグラフィックス オブジェクトを座標軸から削除し (Position
とUnits
を除く)、すべての座標軸プロパティを既定値にリセットして、現在の座標軸のハンドルを返します。現在の座標軸が存在しない場合には、newplot
により現在の座標軸が作成されますが、そのNextPlot
プロパティは再チェックされません。すべてのグラフィックス オブジェクトを座標軸から削除し (
Position
とUnits
を除く)、すべての座標軸プロパティを既定値にリセットして、現在の座標軸のハンドルを返します。現在の座標軸が存在しない場合には、newplot
により現在の座標軸が作成されますが、そのNextPlot
プロパティは再チェックされません。
関数 hold と NextPlot プロパティ
関数 hold
により、NextPlot
プロパティに簡単にアクセスできます。グラフにオブジェクトを追加する際、他のオブジェクトを削除したりプロパティをリセットしないようにするには、hold on
を使用します。
hold on
— Figure と座標軸のNextPlot
プロパティをadd
に設定します。線グラフはColorOrder
およびLineStyleOrder
プロパティ値を繰り返し続けます。hold off
— 座標軸のNextPlot
プロパティをreplace
に設定します。
hold
が on
か off
かを判定するには、ishold
を使用します。
ユーザーが記述したプロット関数の動作のコントロール
MATLAB に用意されている関数 newplot
により、NextPlot
プロパティの設定に準拠するプロット関数を簡単に記述できます。
newplot
は、NextPlot
プロパティの値をチェックし、これらの値に基づいて適切な動作を実行します。newplot
は、オブジェクト作成関数を呼び出す任意の関数の最初の部分に配置します。
記述した関数で newplot
を呼び出すと、まず Figure の NextPlot
プロパティがクエリされます。このプロパティ値に基づいて、newplot
は次の表に示されているアクションを実行します。
Figure の NextPlot プロパティ値 | 関数 newplot の動作 |
---|---|
Figure が存在しない | Figure を作成し、現在の Figure にします。 |
| Figure を現在の Figure にします。 |
| 新しい Figure を作成し、現在の Figure にします。 |
| Figure の子オブジェクト (axes オブジェクトとそれらの下位オブジェクト) を削除し、この Figure を現在の Figure にします。 |
| Figure の子オブジェクトを削除し、Figure のプロパティを既定値にリセットして、この Figure を現在の Figure にします。 |
次に、newplot
は現在の座標軸の NextPlot
プロパティをチェックします。このプロパティ値に基づいて、newplot
は次の表に示されているアクションを実行します。
座標軸の NextPlot プロパティ値 | 関数 newplot の動作 |
---|---|
現在の Figure に座標軸がない | 座標軸を作成し、現在の座標軸にします。 |
| 座標軸を現在の座標軸にし、そのハンドルを返します。 |
| 座標軸の子オブジェクトを削除し、この座標軸を現在の座標軸にします。 |
| 座標軸の子オブジェクトを削除し、座標軸のプロパティを既定値にリセットして、この座標軸を現在の座標軸にします。 |