ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

subplot

タイル状に配置された Axes の作成

構文

  • subplot(m,n,p)
  • subplot(m,n,p,'replace')
  • subplot(m,n,p,'align')
  • subplot('Position',positionVector)
  • subplot(___,Name,Value)
  • h = subplot(___)

説明

subplot(m,n,p) は、現在の Figure を mn 列のグリッドに分割し、p で指定されたグリッド位置に Axes を作成します。MATLAB® は行単位でグリッドに番号を付けます。これにより、1 番目のグリッドが 1 行目の 1 列目になり、2 番目のグリッドが 1 行目の 2 列目になります。3 番目以降のグリッドについても同様です。

subplot(m,n,p,'replace') は、グリッド位置 p にある既存の Axes を削除し、新しい Axes を作成します。

subplot(m,n,p,'align') は、プロット ボックスが整列するように新しい Axes を作成します。これは既定の動作です。

subplot('Position',positionVector) は、positionVector で指定された位置に新しい Axes を作成します。positionVector は、エントリが 0.0 ~ 1.0 の範囲の正規化された値になる [left,bottom,width,height] の形式の 4 要素ベクトルです。位置ベクトルで以前の Axes をオーバーラップする Axes を指定した場合、既存の Axes が新しい Axes によって置き換えられます。

subplot(___,Name,Value) は、前の構文のいずれかの入力引数の組み合わせと 1 つまたは複数の Name,Value のペア引数を使用して、Axes のプロパティを指定します。

h = subplot(___) は、関数 subplot によって作成された Axes へのハンドルを返します。

subplot(h) は、後続のプロット コマンドに対して、ハンドル h のある Axes を現在の Axes にします。

すべて展開する

上下のサブプロット

2 つのサブプロットを積み上げた Figure を作成します。各 Axes に正弦波をプロットします。

x = linspace(0,10);
y1 = sin(x);
y2 = sin(5*x);

figure
subplot(2,1,1); 
plot(x,y1)

subplot(2,1,2); 
plot(x,y2)

サブプロットの象限

4 つのサブプロットに分かれた 1 つの Figure を作成します。

さまざまな周波数の正弦値を格納する 4 つのベクトルを設定します。

x = linspace(0,10);
y1 = sin(x);
y2 = sin(2*x);
y3 = sin(4*x);
y4 = sin(8*x);

4 つの正弦波をプロットし、各サブプロットにタイトルを付けます。

figure
subplot(2,2,1);
plot(x,y1);
title('Subplot 1: sin(x)')

subplot(2,2,2);
plot(x,y2);
title('Subplot 2: sin(2x)')

subplot(2,2,3)
plot(x,y3);
title('Subplot 3: sin(4x)')

subplot(2,2,4)
plot(x,y4);
title('Subplot 4: sin(8x)')

異なるサイズのサブプロット

異なるサイズのサブプロットを含む Figure を作成します。

正弦値のベクトルと多項式の値のベクトルを設定します。

x = linspace(-3.8,3.8);
y_cos = cos(x);
y_poly = 1 - x.^2./2 + x.^4./24;

1 番目のサブプロットに正弦波をプロットし、2 番目のサブプロットに多項式をプロットします。Figure の下半分にわたる 3 番目のサブプロットを作成し、両方のベクトルを一緒にプロットします。各サブプロットにタイトルを追加します。

figure
subplot(2,2,1);
plot(x,y_cos);
title('Subplot 1: Cosine')

subplot(2,2,2);
plot(x,y_poly,'g');
title('Subplot 2: Polynomial')

subplot(2,2,[3,4]);
plot(x,y_cos,'b',x,y_poly,'g');
title('Subplot 3 and 4: Both')

サブプロットの置換

サブプロットを空の Axes に置き換えます。

乱数発生器を初期化します。ループを使用して、乱数データのステム プロットを 4 つ含む Figure を作成します。

rng(0,'twister');
figure
for k = 1:4
    data = rand(1,10);
    subplot(2, 2, k)
    stem(data);
end

2 番目のサブプロットを空の Axes に置き換えます。

subplot(2,2,2,'replace')

指定された位置のサブプロット

位置ベクトルを使用して、整列していない 2 つのサブプロットを作成します。

関数 magic のデータをベクトル y に格納します。

y = magic(4);

1 つのサブプロットにベクトルをプロットします。2 番目のサブプロットに棒グラフを作成します。

y = magic(4);
figure
positionVector1 = [0.1, 0.2, 0.3, 0.3];
subplot('Position',positionVector1)
plot(y)

positionVector2 = [0.5, 0.1, 0.4, 0.7];
subplot('Position',positionVector2)
bar(y)

サブプロットの Axes ハンドルを返す

2 つのサブプロットを含む Figure を作成し、各サブプロットのハンドルを格納します。

figure
h1 = subplot(2,1,1);
h2 = subplot(2,1,2);

関数 peaks のデータを行列 Z に格納します。Axes ハンドルを使用して、上のサブプロットに Z の最初の 20 行をプロットします。下のサブプロットにデータセット全体をプロットします。

Z = peaks;
plot(h1,Z(1:20,:))
plot(h2,Z);

Axes プロパティを使用して、下のサブプロットの目盛りを変更します。既存の Axes プロパティの設定がオーバーライドされるのを防ぐために、プロット関数は Axes プロパティを指定する前に実行します。

set(h2,'XTick',[0,10,25,40,50])

Axes プロパティの指定

Axes プロパティ Parent を使用して、サブプロットの Figure を指定します。

2 つの Figure を作成し、各 Figure のハンドルを格納します。

f1 = figure;
f2 = figure;

Axes プロパティ Parent の値を f1 に設定して、最初の Figure の下のサブプロットに Axes を作成します。サブプロットの Axes のハンドルを h として保存します。

h = subplot(2,1,2,'Parent',f1);

乱数データのベクトルを設定し、ステム プロットを作成します。Axes ハンドル h を使用して、プロット関数の Axes を指定します。

rng(0,'twister');
data = rand(1,10);
stem(h,data)
title(h,'Lower Subplot of First Figure')

Axes を現在の Axes にする

サブプロットの Axes ハンドルを使用して、その Axes を現在の Axes にします。

複数のサブプロットを含む Figure を作成します。各サブプロットのハンドルをベクトル h に格納します。

figure;
for k = 1:4
    h(k) = subplot(2,2,k);
end

2 番目のサブプロットを現在の Axes にします。正弦波をプロットし、軸の範囲を変更します。

x = linspace(1,50);
y = sin(x);

subplot(h(2));
plot(x,y,'Color',[0.1, 0.5, 0.1]);
title('Second Subplot')
axis([0,50,-1,1])

入力引数

すべて展開する

m - グリッド行の数1 (既定の設定) | 正の整数

グリッド行の数。正の整数として指定します。

データ型:single | double

n - グリッド列の数1 (既定の設定) | 正の整数

グリッド列の数。正の整数として指定します。

データ型:single | double

p - 新しい Axes のグリッド位置正の整数 | ベクトル

新しい Axes のグリッド位置。正の整数または正の整数のベクトルとして指定します。

  • p が正の整数の場合、subplot はグリッド位置 p に新しい Axes を作成します。

  • p が正の整数のベクトルの場合、subplotp にリストされたグリッド位置にわたる新しい Axes を作成します。たとえば、subplot(2,3,[2,5]) は、位置 2 ~ 5 にわたる 1 つの Axes を作成します。subplot(2,3,[2,6]) を使用して、位置 2、3、5 および 6 にわたる 1 つの Axes を作成します。

データ型:single | double

positionVector - 新しい Axes の正規化された位置0.0 ~ 1.0 の値の 4 要素ベクトル

新しい Axes の正規化された位置。0.0 ~ 1.0 の値で構成される [left,bottom,width,height] 形式の 4 要素ベクトルとして指定します。これらの値は、Figure の内部に対して正規化されます。最初の 2 つの要素は、Figure の左下隅に対する Axes の左下隅の位置を指定します。最後の 2 つの要素は、新しい Axes の幅と高さを指定します。以下の構文を使用して、グリッド位置以外に Axes を配置します。

例: [0.1, 0.1, 0.35, 0.35]

データ型:single | double

名前/値のペアの引数

オプションの Name,Value 引数のペアをコンマ区切りで指定します。ここで、Name は引数名で、Value は対応する値です。Name は単一引用符 (' ') で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順番で指定できます。

例: 'XGrid’,'on'

サブプロットに対して任意の Axes プロパティを設定できます。一部のプロット関数は、既存の Axes プロパティ設定をオーバーライドします。Axes プロパティがオーバーライドされるのを防ぐために、プロット関数は Axes プロパティを指定する前に実行します。Axes プロパティの一覧については、「Axes Properties」を参照してください。

出力引数

すべて展開する

h - Axes オブジェクトのハンドルスカラー

Axes オブジェクトのハンドル。スカラーとして返されます。特定の Axes オブジェクトのプロパティのクエリと変更に使用できる一意の識別子です。

詳細

すべて展開する

ヒント

  • Axes が既に存在する場合、コマンド subplot(m,n,p) は位置 p のサブプロットを現在の Axes にします。

  • subplot(111) は例外で、subplot(1,1,1) とは動作が同一ではありません。subplot(111) は、下位互換性を確保するための特殊なサブプロットで、すぐに Axes を作成せず、次のグラフィックス コマンドが clf reset を実行するように Figure を設定します。次のグラフィックス コマンドは、Figure の子をすべて削除し、既定の位置に新しい Axes を作成します。subplot(111) はハンドルを返しません。そのため、コードで戻り引数を指定すると、エラーが発生します。

  • 新しいサブプロット Axes が既存の Axes とオーバーラップする場合、MATLAB は既存の Axes を削除します。新しい Axes を既存のサブプロットの上に重ねるには、axes コマンドを使用します。たとえば、subplot('Position',[.35 .35 .3 .3]) は下に位置するサブプロットをすべて削除しますが、axes('Position',[.35 .35 .3 .3]) は下に位置する Axes を削除せずに、Figure の中央に新しい Axes を配置します。

  • スクリプトを使用してサブプロットを作成する場合、MATLAB は、drawnow コマンドが実行されるか、MATLAB がユーザー コマンドの待機に戻るまで、Position プロパティ値を確定しません。サブプロットの Position プロパティ値は、スクリプトがプロットを更新するか終了するまで、変更される可能性があります。

参考

| | | |

この情報は役に立ちましたか?