15.2.4 Multiple Plots on One Page

Last-modified: 2025-03-16 (日) 20:02:49

15.2.4 1ページに複数のプロットを表示する

Octave は 1 つの図に複数のプロットを表示できます。これを行う最も簡単な方法は、subplot関数を使用してプロット領域を整数でインデックス付けされた一連のサブプロット ウィンドウに分割することです。たとえば、

subplot (2, 1, 1)
fplot (@sin, [-10, 10]);
subplot (2, 1, 2)
fplot (@cos, [-10, 10]);

は、2 つの独立した軸を持つ図を作成します。1 つは正弦波、もう 1 つは余弦波を表示します。subplot の最初の呼び出しにより、図は 2 つのプロット領域 (2 行と 1 列) に分割され、最初のプロット領域がアクティブになります。によって作成されたプロット領域のグリッドはsubplot、行優先順 (左から右、上から下) で番号が付けられます。正弦波をプロットした後、subplot の次の呼び出しにより 2 番目のサブプロット領域がアクティブになりますが、図は再分割されません。

: subplot (rows, cols, index)
: subplot (rows, cols, index, hax)
: subplot (rcn)
: subplot (hax)
: subplot (…, "align")
: subplot (…, "replace")
: subplot ("position", pos)
: subplot (…, prop, val, …)
: hax = subplot (…)
行数x 列数のサブウィンドウを持つプロット グリッドを設定し、プロットする現在の軸 ( ) をインデックスgcaで指定された場所に設定します。

( rows、cols、 index ) 引数の後に軸ハンドルhaxが指定されている場合、対応する軸はサブプロットに変換されます。

数値引数を 1 つだけ指定する場合は、1 桁目に行数、2 桁目に列数、3 桁目にプロット インデックスを指定する 3 桁の値にする必要があります。

プロット インデックスは行方向に実行されます。最初に、行内のすべての列に番号が付けられ、次に次の行が埋められます。

たとえば、2x3 グリッドのプロットでは、プロット インデックスは次のように実行されます。

+-----+-----+-----+
| 1 | 2 | 3 |
 +-----+-----+-----+
| 4 | 5 | 6 |
+-----+-----+-----+

インデックスはベクトルでもかまいません。この場合、新しい軸は指定されたグリッド位置を囲みます。最初のデモはこれを示しています。

demo ("subplot", 1)

アクティブにするサブプロットのインデックスは、前のコマンドから返された軸ハンドルhaxsubplotによって指定することもできます。

オプション"align"が指定されている場合、サブウィンドウのプロット ボックスは整列しますが、軸の目盛りやラベルのためのスペースがなくなる可能性があります。

オプション"replace"が指定されている場合は、プロットする現在の軸を要求されたサブプロットに切り替えるだけでなく、サブプロット軸がリセットされます。

この"position"プロパティを使用すると、現在の図内でサブプロット軸を正確に配置できます。オプションpos は、軸の位置とサイズを決定する 4 要素のベクトル [x、y、幅、高さ] です。posの値は[0,1] の範囲で正規化されます。

すべてのプロパティ/値のペアは、基になる axes オブジェクトに直接渡されます。プロパティの完全なリストは、Axes Propertiesに記載されています。

新しく作成された軸によって(部分的に)カバーされる既存の軸はすべて削除されます。

出力haxが要求された場合、subplot はサブプロットの軸ハンドルを返します。これは、を使用してサブプロットのプロパティを変更する場合に便利ですset。

状況によっては、subplot再利用できる軸を識別できず、軸が置き換えられる場合があります。軸を繰り返し参照する必要がある場合は、同じ位置を繰り返し subplot呼び出すのではなく、事前に軸ハンドルを作成して保存することを検討してください。subplot

x = 1:10;
y = rand (16, 10);
for i_plot = 1:4
 hax(i_plot) = subplot (2, 2, i_plot);
 hold (hax(i_plot), "on");
 grid (hax(i_plot), "on");
endfor
for i_loop = 1:2
 for i_plot = 1:4
   iy = (i_loop - 1)*4 + i_plot;
   plotyy (hax(i_plot), x,y(iy,:), x,y(iy+1,:));
 endfor
endfor

See also: axes, plot, gca, set.