プロットおよびグラフのクリップ
この例では、MATLAB® によりプロットでクリップを使用する方法およびクリップを制御する方法を示します。
クリップとは
クリップは、オブジェクトの一部がプロット内の座標軸の境界の外側に出るときに発生します。MATLAB® では、クリップされたオブジェクトの部分は、画面や印刷された出力に表示されません。既定では、MATLAB はほとんどのオブジェクトを軸の範囲の境界でクリップします。
クリップをオフにする
2 次元プロットでのクリップ
2 次元プロットでは、クリップが発生します。たとえば、MATLAB は次の 2 次元プロットで正弦波をクリップします。
x = 0:pi/20:2*pi; y = sin(x); plot(x,y) xlim([0,2*pi]) ylim([-0.9 0.9])
座標軸の Clipping
プロパティを使用して、正弦波のクリップを制御できます。クリップを "off"
にして、正弦波全体を表示します。
ax = gca;
ax.Clipping = "off";
3 次元プロットでのクリップ
3 次元プロットでも、クリップが発生します。たとえば、MATLAB は次の 3 次元プロットで表面をクリップします。
figure surf(peaks) zlim([-4 4])
座標軸の Clipping
プロパティを使用して、座標軸のクリップ動作を制御できます。クリップを "off"
にして、表面全体を表示します。
ax = gca;
ax.Clipping = "off";
クリップ スタイルの制御
ClippingStyle
プロパティを使用して、座標軸に対するクリップの動作を制御します。ClippingStyle
を "3dbox"
に設定した場合、MATLAB は "x" 軸、"y" 軸、および "z" 軸の範囲で定義したボリュームにオブジェクトをクリップします。ClippingStyle
を "rectangle"
に設定した場合、MATLAB は "x" 軸、"y" 軸、および "z" 軸の外側のまわりに描画された架空の四角形でオブジェクトをクリップします。以下のプロットは、2 つのクリップ スタイルの差異を示しています。
テキストのクリップの制御
axes 以外のオブジェクトは Clipping
プロパティをもちます。MATLAB は、座標軸のプロット ボックスで text オブジェクトをクリップすることもできます。たとえば、何らかのデータをプロットし、テキストの説明を追加します。既定では、text オブジェクトの Clipping
プロパティは "off"
に設定されているため、ズームまたはパンすると、テキストが軸の範囲外に出る可能性があります。
figure
x = 1:10;
y = -10:10;
[X,Y] = meshgrid(x,y);
Z = X.^2-Y.^2;
surf(X,Y,Z);
ylim([-20.5 1.5])
t = text(1,7,60,"example");
テキストの Clipping
プロパティを "on"
に設定すると、text オブジェクトの (x,y,z)
位置 ("アンカー ポイント" とも呼ばれる) が座標軸のプロット ボックスの外側にある場合、テキスト全体が表示されなくなります。
t.Clipping = "on";
テキストを座標軸のプロット ボックスでクリップしてテキストの一部を表示する場合は、座標軸の ClippingStyle
プロパティも "rectangle"
に設定します。
ax = gca;
ax.ClippingStyle = "rectangle";
クリップおよびマーカー
データ点自体がプロットの "x" 軸と "y" 軸の範囲内にある限り、クリップは各データ点で描画されるマーカーに影響しません。MATLAB は、マーカーが座標軸の境界のわずか外側に出ていても、マーカー全体を表示します。
p = plot(1:10,'*');
p.MarkerSize = 10;
axis([1 10 1 10])