ドキュメンテーション

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

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 で指定された位置のサブプロットに座標軸を作成します。MATLAB® は行単位でサブプロットに番号を付けます。これにより、1 番目のサブプロットが 1 行目の 1 列目になり、2 番目のサブプロットが 1 行目の 2 列目になります。3 番目以降のサブプロットについても同様です。

subplot(m,n,p,'replace') は、位置 p にある既存の座標軸を削除し、新しい座標軸を作成します。

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

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

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

h = subplot(___) は、関数 subplot によって作成される axes オブジェクトを返します。

subplot(h) は、ハンドル h をもつ座標軸をその Figure の現在の座標軸にしますが、Figure がまだ現在の Figure になっていない場合、その Figure を現在の Figure にはしません。

すべて折りたたむ

上下のサブプロット

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 を作成します。

データを定義します。

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')

サブプロットの空の座標軸での置き換え

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

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

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

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

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

整列していない 2 つのサブプロットを含む Figure を作成します。

関数 magic から返されるデータとして y を定義します。

y = magic(4);

1 つのサブプロットに y をプロットします。2 番目のサブプロットに y の棒グラフを作成します。サブプロットごとにカスタム位置を指定します。

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 を作成し、サブプロットの Axes ハンドル ax1 および ax2 を返します。

figure
ax1 = subplot(2,1,1);
ax2 = subplot(2,1,2);

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

Z = peaks;
plot(ax1,Z(1:20,:))
plot(ax2,Z)

下のサブプロットの目盛りを変更します。

ax2.XTick = [0,10,25,40,50];

一部のプロット関数は、座標軸プロパティを設定します。既存の Axes プロパティの設定がオーバーライドされるのを防ぐために、プロット関数は Axes プロパティを指定する前に実行します。

サブプロット座標軸を現在の座標軸にする

Axes ハンドルを使って、サブプロットを現在の座標軸にします。

複数のサブプロットを含む Figure を作成します。サブプロットの Axes ハンドルをベクトル 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 に新しい座標軸を作成します。

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

データ型: 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 のプロパティ を参照してください。

出力引数

すべて折りたたむ

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 プロパティ値は、スクリプトがプロットを更新するか終了するまで、変更される可能性があります。

参考

MATLAB 関数

プロパティ

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