Main Content

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

pbaspect

控制每个轴的相对长度

说明

示例

pbaspect(ratio) 设置当前坐标区的图框纵横比。图框纵横比是 x 轴、y 轴和 z 轴的相对长度。将 ratio 指定为由正值组成的三元素向量,以表示 x 轴、y 轴和 z 轴长度的比率。例如,[3 1 1] 指定 x 轴的长度等于 y 轴和 z 轴长度的三倍。如需轴长度在所有方向上都相等,请使用 [1 1 1]

示例

pb = pbaspect 返回当前坐标区的图框纵横比。

示例

pbaspect auto 设置自动模式,从而允许坐标区选择适当的图框纵横比。模式必须为自动,才能启用坐标区的“伸展填充”功能。

pbaspect manual 设置手动模式,并使用 Axes 对象的 PlotBoxAspectRatio 属性中存储的比率。当模式为手动时,它会禁用坐标区的伸展填充功能。指定图框纵横比的值会将模式设置为手动。

示例

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

示例

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

示例

全部折叠

创建一个简单的线图。使 x 轴、y 轴和 z 轴(不显示)长度相等。

x = linspace(0,10);
y = sin(x);
plot(x,y)
pbaspect([1 1 1])

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

绘制一个曲面,并使 x 轴的长度是 y 轴和 z 轴的两倍。

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

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

当您指定图框纵横比时,相关联的模式将更改为手动。查询当前图框纵横比模式。

m = pbaspect('mode')
m = 
'manual'

创建随机数据的三维散点图并设置图框纵横比。然后还原为默认图框纵横比。

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

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

pbaspect 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.

查询图框纵横比。这些值指示 x 轴长度、y 轴长度与 z 轴长度的比率。

pb = pbaspect
pb = 1×3

    1.0000    0.9411    0.8496

从 R2019b 开始,您可以使用 tiledlayoutnexttile 函数显示分块图。调用 tiledlayout 函数以创建一个 2×1 分块图布局。调用 nexttile 函数以创建坐标区对象 ax1ax2。在每个坐标区中绘制。然后通过将 ax2 指定为 pbaspect 函数的第一个输入参数,设置下部图的图框纵横比。

tiledlayout(2,1)
ax1 = nexttile;
mesh(peaks(20))

ax2 = nexttile;
mesh(peaks(20))
pbaspect(ax2,[2 2 1])

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

输入参数

全部折叠

图框纵横比,指定为由正值组成的三元素向量。例如,pbaspect([3 2 1]) 指定 x 轴长度、y 轴长度和 z 轴长度的比率为 3:2:1。因此,x 轴最长,z 轴最短。

指定比率可将 Axes 对象的 PlotBoxAspectRatio 属性设置为指定的值。PlotBoxAspectRatio 属性与 DataAspectAspectRatioXLimYLimZLim 属性交互作用,以控制 x 轴、y 轴和 z 轴的长度和缩放。

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

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

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

输出参数

全部折叠

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

查询图框纵横比模式将返回 Axes 对象的 PlotBoxAspectRatio 属性值。

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

查询图框纵横比模式将返回 Axes 对象的 PlotBoxAspectRatioMode 属性值。

详细信息

全部折叠

伸展填充

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

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

算法

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

版本历史记录

在 R2006a 之前推出