Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

daspect

控制沿每个轴的数据单位长度

说明

示例

daspect(ratio) 设置当前坐标区的数据纵横比。数据纵横比是沿 x 轴、y 轴和 z 轴的数据单位的相对长度。指定 ratio 为一个由正值组成的三元素向量,这些正值表示沿每个轴的数据单位的相对长度。例如,[1 2 3] 表示沿 x 轴从 0 到 1 的长度等于沿 y 轴从 0 到 2 的长度和沿 z 轴 0 到 3 的长度。若要在所有方向上采用相同的数据单位长度,请使用 [1 1 1]

示例

d = daspect 返回当前坐标区的数据纵横比。

示例

daspect auto 设置自动模式,允许坐标区选择数据纵横比。模式必须为自动,才能启用坐标区的“伸展填充”功能。

daspect manual 设置手动模式,并使用 Axes 对象的 DataAspectRatio 属性中存储的纵横比。当模式为手动时,它会禁用坐标区的“伸展填充”行为。指定数据纵横比的值会将模式设置为手动。

示例

m = daspect('mode') 返回当前模式,即 'auto''manual'。默认情况下,模式为自动,除非您指定数据纵横比或将模式设置为手动。

示例

___ = daspect(ax,___) 使用 ax 指定的坐标区,而不是使用当前坐标区。指定坐标区作为以上任何语法的第一个输入参数。使用单引号将 'auto''manual' 输入引起来。

示例

全部折叠

绘制一组数据。通过将数据纵横比设置为 [1 1 1],在所有方向上使用相等的数据单位长度。

t = linspace(0,2*pi);
x = cos(t);
y = sin(t);
plot(x,y)
daspect([1 1 1])

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

绘制一组数据。设置数据纵横比,使 x 轴方向的一个数据单位的长度等于 y 轴方向和 z 轴方向(不显示)的两个数据单位的长度。

t = linspace(0,2*pi);
x = cos(t);
y = sin(t);
plot(x,y)
daspect([1 2 2])

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

当您设置数据纵横比时,相关联的模式会更改为手动。查询当前数据纵横比模式。

d = daspect('mode')
d = 
'manual'

创建一个由随机数据构成的三维散点图,并设置数据纵横比。然后还原为默认的数据纵横比。

X = rand(100,1);
Y = rand(100,1);
Z = rand(100,1);
scatter3(X,Y,Z)
daspect([3 2 1])

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

daspect auto

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

创建一个曲面图并查询数据纵横比。

[x,y] = meshgrid(-2:.2:2);
z = x.*exp(-x.^2 - y.^2);
surf(x,y,z)

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

d = daspect
d = 1×3

     4     4     1

比率表示 x 轴方向的四个单位的长度等于 y 轴方向的四个单位和 z 轴方向的一个单位的长度。例如,如果纵横比为 [4 4 1],则 x 轴上从 0 到 1 的长度等于 y 轴上从 0 到 1 的长度以及 z 轴上从 0 到 0.25 的长度。

创建一个包含 ax1ax2 坐标区的 2×1 分块图布局。在坐标区中绘图,并通过指定 ax2daspect 函数的第一个输入参数,设置下部图的数据纵横比。

tiledlayout(2,1)
ax1 = nexttile;
plot(ax1,1:10)

ax2 = nexttile;
plot(ax2,1:10)
daspect(ax2,[1 2 1])

Figure contains 2 axes objects. Axes object 1 contains an object of type line. Axes object 2 contains an object of type line.

输入参数

全部折叠

数据纵横比,指定为由正值组成的三元素向量。例如,daspect([1 2 3]) 指定沿 x 轴的一个单位长度等于沿 y 轴的两个单位长度和沿 z 轴的三个单位长度。

指定数据纵横比会设置 Axes 对象的 DataAspectRatio 属性。DataAspectRatio 属性与 PlotBoxAspectRatioXLimYLimZLim 属性交互作用,以控制 x 轴、y 轴和 z 轴的长度和缩放。

指定纵横比会将 DataAspectRatioMode 属性设置为 'manual' 并禁用坐标区的伸展填充行为。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

目标坐标区,指定为 Axes 对象。如果您不指定坐标区,则 daspect 使用当前坐标区 (gca)。

输出参数

全部折叠

当前数据纵横比,以表示 x 轴、y 轴和 z 轴数据单位长度比的值的三元素向量形式返回。

查询数据纵横比将返回相应 Axes 对象的 DataAspectRatio 属性值。

当前数据纵横比模式,以 'auto''manual' 形式返回。当模式为自动时,MATLAB® 将确定适当的数据纵横比值。如果您指定值,则模式更改为手动。

查询数据纵横比模式将返回相应 Axes 对象的 DataAspectRatioMode 属性值。

详细信息

全部折叠

伸展填充

如果启用了“伸展填充”行为,MATLAB 会伸展坐标区以占满可用空间。坐标区可能与其 DataAspectRatioPlotBoxAspectRatioCameraViewAngle 属性中存储的数据纵横比、绘图框纵横比和相机视角值不完全匹配。

如果您指定数据纵横比、绘图框纵横比或相机视角,则会禁用“伸展填充”行为。如果禁用此行为,MATLAB 会在严格遵循属性值的情况下使坐标区在可用空间内尽可能大,不会变形。有关详细信息,请参阅控制坐标区布局

算法

daspect 函数设置并查询与数据纵横比有关的多个坐标区属性。

  • DataAspectRatio - 存储数据纵横比值的属性。

  • DataAspectRatioMode - 存储数据纵横比模式的属性。如果您设置了纵横比,此属性将更改为 'manual'

版本历史记录

在 R2006a 之前推出