可視化手法 | ![]() ![]() |
縦横比プロパティ設定の影響
希望する結果を得るためにプロパティ同士がどのように相互に関わっているかを理解することが重要です。DataAspectRatio
, PlotBoxAspectRatio
, x 軸、y 軸、z 軸の範囲(XLim
, YLim
, ZLim
プロパティ)は、すべて軸の形状に制約を課しています。
データの縦横比
DataAspectRatio
プロパティは、軸のスケールの割合を制御します。-2 x
2, -4
y
4の範囲で関数
を計算してメッシュプロットをするには、つぎのステートメントで行います。
[X,
Y]=
meshgrid([-2:.15:2],[-4:.3:4]); Z
=
X.*exp(-X.^2
-
Y.^2); mesh(X,Y,Z)
get(gca,'DataAspectRatio') ans = 4 8 1
これは、x 軸上の4単位の長さがy 軸上の8単位の長さおよびz 軸上の1単位の長さと同じデータ値に適用されることを意味します。軸は、デフォルトで縦横比が [1 1 1] のプロットボックスを一杯にします。
各軸の相対的な大きさが、互いに等しくなるようにメッシュプロットを表示したい場合、DataAspectRatio
を [1 1 1]
に設定することができます。
set(gca,'DataAspectRatio',[1 1 1])
DataAspectRatio
プロパティの値を設定することは、DataAspectRatioMode
を manual
に設定し、stretch-to-fillを変更して、指定した縦横比を実現します。
プロットボックスの縦横比
前の節のグラフに対する PlotBoxAspectRatio
の値を見ると、DataAspectRatio
の前の値を使っていることがわかります。
get(gca,'PlotBoxAspectRatio') ans = 4 8 1
MATLABは、指定した DataAspectRatio
を使って、グラフに適合するようにプロットボックスの再スケーリングを行います。
PlotBoxAspectRatio
プロパティは、axesプロットボックスの形状を制御します。MATLABは、デフォルトでこのプロパティを [1 1 1]
に設定し、引き延ばし機能がオンの場合はグラフはプロットボックスを一杯にするように、あるいはstretch-to-fillが変更されている場合は引き伸ばしの制限に達するまで DataAspectRatio
プロパティを調整します。
DataAspectRatio
の値を設定し、それが変更されないようにした場合、MATLABは、代わりに PlotBoxAspectRatio
を変更します。DataAspectRatio
と PlotBoxAspectRatio
の両方を指定した場合、MATLABは既に定義した2つの制限に従うように軸範囲を強制的に変更します。
set(gca,'DataAspectRatio',[1 1 1],... 'PlotBoxAspectRatio',[1 1 1])
MATLABは、軸上の2つの制限を満足するように軸範囲を変更します。
軸範囲の調整
MATLABでは、軸範囲を希望する値に設定することができます。しかし、DataAspectRatio
, PlotBoxAspectRatio
および軸範囲に値を指定すると、軸の定義に過度の制約が適用されます。たとえば、つぎの値を設定すると、軸を描画することができません。
set(gca,'DataAspectRatio',[1 1 1],... 'PlotBoxAspectRatio',[1 1 1],... 'XLim',[-4 4],... 'YLim',[-4 4],... 'ZLim',[-1 1])
この場合、MATLABは PlotBoxAspectRatio
の設定を無視して、自動的にその値を決定します。このため、PlotBoxAspectRatio
は、計算された値になります。
get(gca,'PlotBoxAspectRatio') ans = 4 8 1
MATLABは、指定した DataAspectRatio
と軸範囲を使って軸を描画します。
![]() | Stretch-to-Fillの変更 | 例題 - 現実的なオブジェクトの表示 | ![]() |