| 可視化手法 | ![]() |
縦横比プロパティ設定の影響
希望する結果を得るためにプロパティ同士がどのように相互に関わっているかを理解することが重要です。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の変更 | 例題 - 現実的なオブジェクトの表示 | ![]() |