Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

座標軸のレイアウトの制御

座標軸の位置に関係するプロパティ

Axes オブジェクトには、座標軸のサイズや、Figure 内のタイトルおよび軸ラベルのレイアウトを制御するいくつかのプロパティがあります。

  • OuterPosition — 座標軸の外部境界。タイトル、ラベル、余白が含まれます。このプロパティを [left bottom width height] の形式のベクトルとして指定します。left 値と bottom 値は、Figure の左下隅から外部境界の左下隅までの距離を示します。width 値と height 値は、外部境界の寸法を示します。

  • Position — プロットが表示される内部の座標軸の境界。タイトル、ラベル、余白は含まれません。このプロパティを [left bottom width height] の形式のベクトルとして指定します。

  • TightInsetPosition プロパティ値の幅と高さに加えられる余白。[left bottom right top] の形式でベクトルとして指定します。このプロパティは読み取り専用です。軸ラベルやタイトルを追加すると、MATLAB® によって、テキストに対応するように値が更新されます。Position プロパティと TightInset プロパティによって定義された境界のサイズに、グラフのテキストがすべて含まれます。

  • PositionConstraintAxes オブジェクトのサイズが変更された場合に保持される位置プロパティ。'outerposition' または 'innerposition' のいずれかとして指定します。

  • Units — 位置の単位。自動的な座標軸のサイズ変更を有効にするには、単位を 'normalized' (既定) に設定しなければなりません。位置の単位がインチやセンチメートルなどの長さの単位の場合、Axes オブジェクトは固定のサイズです。

位置と余白の境界

次の図は、OuterPosition 値 (赤)、Position 値 (青)、および TightInset 値 (マゼンタ) で拡張された Position によって定義される座標軸の各領域から成る 2 次元表示です。

次の図は、OuterPosition 値 (赤)、Position 値 (青)、および TightInset 値 (マゼンタ) で拡張された Position によって定義される座標軸の各領域から成る 3 次元表示です。

自動サイズ変更動作の制御

特定の状況を Axes オブジェクトの自動的なサイズ変更のきっかけとすることができます。たとえば、Figure の対話的なサイズ変更や、タイトルや軸ラベルの追加により、自動的なサイズ変更が発動します。場合によっては、新しい座標軸のサイズが PositionOuterPosition の両方の値を満たせないことがあるため、PositionConstraint プロパティによって維持する方の値を指定します。PositionConstraint プロパティは次の値の 1 つとして指定します。

  • 'outerposition'OuterPosition 値を維持します。このオプションは、座標軸やその周囲のテキストが一定の外部境界を越えて広がらないようにする場合に使用します。MATLAB は、座標軸の内部領域 (プロットの表示場所) のサイズを調節して、外部境界内に内容を収めようとします。

  • 'innerposition'InnerPosition 値を維持します。このオプションは、座標軸の内部領域を Figure 内で一定のサイズにしておく場合に使用します。このオプションでは、テキストが Figure をはみ出す場合があります。

通常は、PositionConstraint プロパティを 'outerposition' に設定しておくことをお勧めします。ただし、座標軸のタイトルまたはラベルが極端に長いと、座標軸の内部領域が縮小され、読みづらくなる可能性があります。その場合は、周囲のテキストが Figure からはみ出しても、内部の座標軸を特定のサイズで維持することが望ましいといえます。

たとえば、2 つの座標軸を含む Figure を作成し、各軸の位置に同じ幅と高さを指定します。PositionConstraint プロパティを、上側の軸では 'outerposition' に、下側の軸では 'innerposition' に設定します。上側の軸は、内部領域を縮小してテキストが収まるようにし、テキストが Figure の外にはみ出していないことがわかります。下側の軸では、内部領域のサイズは維持されていますが、一部のテキストが途切れています。

メモ

次のコードでは、R2020a から新しく導入された PositionConstraint プロパティを使用します。以前のリリースを使用している場合は、ActivePositionProperty'outerposition' または 'position' のいずれかに設定します。

figure; 
ax1 = axes('Position',[0.13 0.58 0.77 0.34]);
ax1.PositionConstraint = 'outerposition';
% R2019b and earlier: ax1.ActivePositionProperty = 'outerposition';
plot(ax1,1:10)
title(ax1,'Preserve OuterPosition')
yticklabels(ax1,{'My incredibly descriptive, excessively wordy, and overly long label',...
    'label 2','label 3'})

ax2 = axes('Position',[0.13 0.11 0.77 0.34]);
ax2.PositionConstraint = 'innerposition';
% R2019b and earlier: ax2.ActivePositionProperty = 'position';
plot(ax2,1:10)
title(ax2,'Preserve Position')
yticklabels(ax2,{'My incredibly descriptive, excessively wordy, and overly long label',...
    'label 2','label 3'})

表示域に合わせる動作

既定では、MATLAB によって、使用可能領域を埋めるために座標軸が引き伸ばされます。この "表示域に合わせる" 動作によって、いくらかの歪みが生じる場合があります。座標軸が、DataAspectRatioPlotBoxAspectRatio および CameraViewAngle プロパティに格納されているデータの縦横比、プロット ボックスの縦横比、およびカメラ ビューの角度の値と正確に一致しなくなる場合があります。"表示域に合わせる" 動作は、Axes オブジェクトの DataAspectRatioModePlotBoxAspectRatioMode、および CameraViewAngleMode プロパティが 'auto' に設定されている場合に有効になります。

データの縦横比、プロット ボックスの縦横比、カメラ ビューの角度のいずれかを指定した場合、"表示域に合わせる" 動作は無効となります。"表示域に合わせる" 動作を無効にすると、MATLAB は使用可能な領域内で座標軸を最大限に拡大しつつ、歪みが生じないようプロパティ値を厳密に維持します。

たとえば、次の図は、"表示域に合わせる" 動作を使用した場合と使用しない場合の同じプロットを示しています。点線は、Position プロパティで定義されている使用可能な領域を示しています。どちらのバージョンも、データの縦横比、プロット ボックスの縦横比、カメラ ビューの角度の値は同じです。ただし、左側のプロットでは拡大によりいくらかの歪みが生じています。

表示域に合わせる機能が有効 (歪みあり)表示域に合わせる機能が無効 (歪みなし)

参考

関数

プロパティ

関連するトピック