Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

在绘图和图表中裁剪

以下示例演示 MATLAB® 如何在绘图中使用裁剪和如何控制裁剪。

什么是裁剪?

当绘图的一部分超出坐标区的边界时即会出现裁剪的情况。在 MATLAB® 中,被裁剪的绘图部分不会显示在屏幕上或打印输出中。边界由绘图的坐标轴范围确定。

关闭裁剪

默认情况下,MATLAB 会裁剪掉超出坐标区范围的绘图。

figure
surf(peaks)
zlim([-4 4])

Figure contains an axes. The axes contains an object of type surface.

使用坐标区的 Clipping 属性控制裁剪行为。

ax = gca;               % get the current axis
ax.Clipping = 'off';    % turn clipping off

Figure contains an axes. The axes contains an object of type surface.

控制裁剪样式

使用 ClippingStyle 属性控制裁剪的工作方式。如果 ClippingStyle 设置为 '3dbox',则 MATLAB 会将绘图裁剪为由 xyz 轴范围定义的空间体。如果 ClippingStyle 设置为 'rectangle',则 MATLAB 会将绘图裁剪为一个围绕 xyz 轴外围而成的虚构矩形。以下绘图显示两种裁剪样式之间的差异。

在二维绘图中裁剪

在二维绘图中也可以使用裁剪。例如,MATLAB 会裁剪以下绘图中的正弦波。

x = -pi:pi/20:pi;
y = sin(-pi:pi/20:pi);
plot(x,y)
ylim([-0.9 0.9])

Figure contains an axes. The axes contains an object of type line.

如果关闭裁剪,则 MATLAB 显示整个正弦波。

ax = gca;
ax.Clipping = 'off';

Figure contains an axes. The axes contains an object of type line.

裁剪和标记

只要每个数据点本身在绘图的 xy 坐标轴范围内,裁剪就不影响在每个数据点上绘制的标记。MATLAB 会显示整个标记,即便它稍微超出坐标区的边界,也会显示出来。

p = plot(1:10,'*');
p.MarkerSize = 10;
axis([1 10 1 10])

Figure contains an axes. The axes contains an object of type line.