Main Content

pbaspect

各軸の相対的な長さの制御

説明

pbaspect(ratio) は、現在の座標軸のプロット ボックスの縦横比を設定します。プロット ボックスの縦横比は、x 軸、y 軸および z 軸の相対的な長さです。ratio を、x 軸、y 軸および z 軸の長さの比率を表す正の値からなる、3 要素ベクトルとして指定します。たとえば、[3 1 1] は、x 軸の長さが y 軸および z 軸の長さの 3 倍になるよう指定します。すべての方向の軸の長さを同じにするには、[1 1 1] を使用します。

pb = pbaspect は、現在の座標軸のプロット ボックスの縦横比を返します。

pbaspect auto は自動モードを設定し、座標軸が適切なプロット ボックスの縦横比を選択できるようにします。座標軸の表示域に合わせる機能を有効にするには、モードが自動に設定されていなければなりません。

pbaspect manual は手動モードを設定し、Axes オブジェクトの PlotBoxAspectRatio プロパティに格納されている比率を使用します。モードが手動の場合、座標軸を表示域に合わせる機能は無効にされます。プロット ボックスの縦横比の値を指定すると、モードが手動に設定されます。

m = pbaspect('mode') は現在のモードを返します。これは 'auto' または 'manual' です。プロット ボックスの縦横比を指定したりモードを手動に設定したりしない限り、既定で自動モードが使用されます。

___ = pbaspect(ax,___) は、現在の座標軸の代わりに ax で指定される座標軸を使用します。前述の任意の構文で、最初の入力引数として座標軸を指定します。'auto''manual' の入力は、一重引用符で囲みます。

すべて折りたたむ

簡単なライン プロットを作成します。x 軸、y 軸、z 軸 (非表示) をすべて同じ長さにします。

x = linspace(0,10);
y = sin(x);
plot(x,y)
pbaspect([1 1 1])

Figure contains an axes object. The axes object contains an object of type line.

表面をプロットして x 軸を y 軸と z 軸の 2 倍の長さにします。

[x,y] = meshgrid(-2:.2:2);
z = x.*exp(-x.^2 - y.^2);
surf(x,y,z)
pbaspect([2 1 1])

Figure contains an axes object. The axes object contains an object of type surface.

プロット ボックスの縦横比を指定すると、対応するモードが手動に切り替わります。プロット ボックス縦横比の現在のモードをクエリします。

m = pbaspect('mode')
m = 
'manual'

ランダム データの 3 次元散布図を作成し、プロット ボックスの縦横比を設定します。次に、既定のプロット ボックスの縦横比に戻します。

X = rand(100,1);
Y = rand(100,1);
Z = rand(100,1);
scatter3(X,Y,Z)
pbaspect([3 2 1])

Figure contains an axes object. The axes object contains an object of type scatter.

pbaspect auto

Figure contains an axes object. The axes object contains an object of type scatter.

表面プロットを作成します。

[x,y] = meshgrid(-2:.2:2);
z = x.*exp(-x.^2 - y.^2);
surf(x,y,z)

Figure contains an axes object. The axes object contains an object of type surface.

プロット ボックスの縦横比をクエリします。値は x 軸、y 軸、z 軸の長さの比率を示します。

pb = pbaspect
pb = 1×3

    1.0000    0.9411    0.8496

R2019b 以降、関数 tiledlayout および nexttile を使用して、プロットをタイル表示できます。関数 tiledlayout を呼び出して、2 行 1 列のタイル表示チャート レイアウトを作成します。関数 nexttile を呼び出して、axes オブジェクト ax1 および ax2 を作成します。各座標軸にプロットします。次に、ax2 を関数 pbaspect の最初の入力引数に指定して、下のプロットのプロット ボックスの縦横比を設定します。

tiledlayout(2,1)
ax1 = nexttile;
mesh(peaks(20))

ax2 = nexttile;
mesh(peaks(20))
pbaspect(ax2,[2 2 1])

Figure contains 2 axes objects. Axes object 1 contains an object of type surface. Axes object 2 contains an object of type surface.

入力引数

すべて折りたたむ

プロット ボックスの縦横比。正の値の 3 要素ベクトルとして指定します。たとえば、pbaspect([3 2 1])x 軸、y 軸、z 軸のそれぞれの長さの比率が 3 対 2 対 1 になるよう指定します。その場合、x 軸が一番長く、z 軸が一番短くなります。

比率を指定すると、Axes オブジェクトの PlotBoxAspectRatio プロパティが指定した値に設定されます。PlotBoxAspectRatio プロパティは DataAspectAspectRatioXLimYLimZLim の各プロパティと連動して、x 軸、y 軸、z 軸の長さとスケールを制御します。

比率を指定すると、PlotBoxAspectRatioMode プロパティが 'manual' に設定され、座標軸の表示域に合わせる動作が無効になります。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

ターゲット座標軸。Axes オブジェクトとして指定します。座標軸を指定しない場合、pbaspect は現在の座標軸 (gca) を使用します。

出力引数

すべて折りたたむ

現在のプロット ボックスの縦横比。x 軸、y 軸、z 軸の長さの比率を表す値からなる、3 要素ベクトルとして返されます。

プロット ボックスの縦横比の値をクエリすると、Axes オブジェクトの PlotBoxAspectRatio プロパティの値が返されます。

現在のプロット ボックスの縦横比のモード。'auto' または 'manual' として返されます。モードが自動の場合、プロット ボックスの適切な縦横比が MATLAB® によって決定されます。値を指定した場合、モードは手動に切り替わります。

プロット ボックス縦横比のモードをクエリすると、Axes オブジェクトの PlotBoxAspectRatioMode プロパティの値が返されます。

詳細

すべて折りたたむ

表示域に合わせる

"表示域に合わせる" 動作が有効の場合、使用可能な領域に合わせて MATLAB は座標軸を拡大します。座標軸が、その DataAspectRatioPlotBoxAspectRatio および CameraViewAngle プロパティに格納されているデータの縦横比、プロット ボックスの縦横比およびカメラ画角の値と正確に一致しなくなる場合があります。

データの縦横比、プロット ボックスの縦横比、カメラ画角のいずれかを指定した場合、"表示域に合わせる" 動作は無効となります。表示域に合わせる機能を無効にすると、MATLAB は使用可能な領域内で座標軸を最大限に拡大しつつ、歪みの生じないようプロパティ値を厳密に維持します。詳細については、座標軸のレイアウトの制御を参照してください。

アルゴリズム

関数 pbaspect は、データの縦横比に関連するいくつかの座標軸プロパティの設定およびクエリを行います。

  • PlotBoxAspectRatio — プロット ボックスの縦横比の値が格納されているプロパティ。

  • PlotBoxAspectRatioMode — プロット ボックスの縦横比のモードが格納されているプロパティ。比率を設定すると、このプロパティは 'manual' に変更されます。

バージョン履歴

R2006a より前に導入