Main Content

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

位置に関係するプロパティと関数

座標軸のサイズと位置を取得および設定するためのプロパティと関数がいくつかあります。次の表に概要を示します。

関数またはプロパティ説明

OuterPosition プロパティ

このプロパティを使用して、タイトル、ラベル、余白を含む、座標軸の外部境界をクエリまたは変更します。外部境界を変更するには、このプロパティを [left bottom width height] の形式のベクトルとして指定します。left 値と bottom 値は、Figure の左下隅から外部境界の左下隅までの距離を示します。width 値と height 値は、外部境界の寸法を示します。

Position プロパティ

このプロパティを使用してプロット領域をクエリまたは変更します。通常、プロット領域はプロット ボックスで囲まれています。この領域には、タイトル、ラベル、およびタイトとラベル周囲の余白は含まれません。プロット領域のサイズを変更するには、このプロパティを [left bottom width height] の形式のベクトルとして指定します。

関数 tightPosition

R2022b 以降

この関数を使用してプロット領域をクエリします。通常、プロット領域はプロット ボックスで囲まれています。多くの場合、この関数は、縦横比が制約されている座標軸 (正方形の座標軸、極座標軸、イメージを含む座標軸など) について、Position プロパティよりも正確なサイズと位置の情報を返します。

TightInset プロパティ

このプロパティを使用して、タイトル、目盛りラベル、軸ラベルのプロット ボックス周囲の余白をクエリします。軸ラベルやタイトルを追加すると、MATLAB® によって、テキストに対応するようにこのプロパティが更新されます。Position プロパティと TightInset プロパティによって定義された境界のサイズに、テキスト ラベルがすべて含まれます。

PositionConstraint プロパティ

R2020a 以降

このプロパティを使用して、タイトルまたはラベルを追加するときに、(座標軸内の) プロット領域と、座標軸の外部境界とのどちらが保持されるかをクエリまたは制御します。座標軸についてそれらのどちらが保持されるかを変更するには、このプロパティを "innerposition" または "outerposition" として指定します。

Units プロパティ

このプロパティを使用して、座標軸の位置の値の単位をクエリおよび変更します。自動的な座標軸のサイズ変更を有効にするには、この値を "normalized" (既定) に設定しなければなりません。

関数 axis

この関数を使用すると、計算を実行したり、特定のプロパティを設定したりしなくても、座標軸の範囲や縦横比を調整できます。以下に例を示します。

  • axis image — イメージに合わせてプロット ボックスのサイズを変更します。

  • axis padded — 可視化 (プロットされたラインなど) とプロット ボックスの間にパディングの余白を追加します。

位置と余白の境界

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

2-D Cartesian axes with a red rectangle drawn around the area defined by the OuterPosition values, a blue rectangle drawn around the region defined by the Position values, and a magenta rectangle drawn around the area defined by the Position and TightInset values combined

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

3-D Cartesian axes with a red rectangle drawn around the area defined by the OuterPosition values, a blue rectangle drawn around the region defined by the Position values, and a magenta rectangle drawn around the area defined by the Position and TightInset values combined

正方形または制約付き縦横比の位置

R2022b 以降

イメージをプロットしている場合など、座標軸に制約付き縦横比がある場合、Position プロパティと関数 tightPosition は異なる結果を返します。作成するプレゼンテーションのタイプに応じて、それらのいずれかを使用します。

たとえば、イメージを表示するとします。関数 axis を使用して、イメージの縦横比を保持します。

figure
C = imread("ngc6543a.jpg");
ax = axes;
image(C)
axis image

関数 tightPosition を呼び出して、位置ベクトルを取得します。このベクトルを使用して、座標軸に現在表示されているイメージを囲む赤の四角形を描画します。

tpos = tightPosition(ax);
annotation("rectangle",tpos,Color="red",LineWidth=2)

Axes showing an image with a red rectangle drawn around the area defined by the value returned by the tightPosition function

座標軸の Position プロパティをクエリして、別の位置ベクトルを取得します。このベクトルを使用して、サイズは同様だが既定の縦横比があるイメージのプロット領域を定義する、青色の四角形を描画します。このベクトルの値は、縦横比が異なる複数のイメージを連続して表示するときに、イメージ領域全体をクエリするのに役立つことがあります。

pos = ax.Position;
annotation("rectangle",pos,Color="blue",LineWidth=2)

Axes showing an image with a red rectangle drawn around the area defined by the value returned by the tightPosition function. A blue rectangle is drawn around the area defined by the Position property. The red rectangle coincides with the perimeter of the plot box. The area returned by the Position property has more space on the left and right sides of the image.

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

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

PositionConstraint プロパティは次の値の 1 つとして指定します。

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

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

R2020a より前: ActivePositionProperty および、値 "outerposition" または "position" を使用します。

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

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

figure; 
ax1 = axes("Position",[0.13 0.58 0.77 0.34]);
ax1.PositionConstraint = "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";
plot(ax2,1:10)
title(ax2,"Preserve Position")
yticklabels(ax2,["My incredibly descriptive, excessively wordy, and overly long label",...
    "label 2","label 3"])

Two axes that are vertically stacked. The upper axes has a long y-axis label, and the plot box has shrunk to accommodate the long string of text. In the lower axes, the y-axis label is clipped to preserve the size of the plot box.

表示域に合わせる動作

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

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

たとえば、次の図は、"表示域に合わせる" 動作を有効にした場合と無効にした場合の同じプロットを示しています。どちらのバージョンも、データの縦横比、プロット ボックスの縦横比、カメラ画角の値は同じです。ただし、左側のプロットでは拡大によりいくらかの歪みが生じています。

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

Plot of a circle stretched to fill the plot box, which is rectangular. Tthe circle displays as an oval.

Plot of a circle without any distortion

参考

関数

プロパティ

関連するトピック