主要内容

zoom

启用缩放模式

说明

您可以使用缩放模式以交互方式更改坐标区范围来浏览数据。使用 zoom 函数启用或禁用缩放模式,并设置其他基本选项。要进一步控制缩放模式行为,请返回并使用 zoom 对象。

大多数图支持缩放模式,包括线图、条形图、直方图和曲面图。支持缩放模式的图通常在坐标区工具栏中显示“缩放” 按钮。

您还可以使用默认情况下启用的内置坐标区交互来以交互方式浏览数据。例如,您可以通过滚动或捏合手指来放大和缩小坐标区的视图。内置交互不要求您启用交互模式,并且比交互模式响应更快。但是,您可以启用缩放模式来自定义缩放行为。有关内置交互的详细信息,请参阅对图的交互进行控制

创建对象

描述

zoom option 为当前图窗中的所有坐标区设置缩放模式。例如,zoom on 会启用缩放模式,zoom xon 仅对 x 维度启用缩放模式,zoom off 则禁用缩放模式。

启用缩放模式时,可使用光标、滚轮或键盘缩放坐标区的视图。

  • 光标 - 要放大,请将光标放在要作为坐标区中心的位置,然后点击。要缩小,请按住 Shift 并点击。要放大某矩形区域,请点击并拖动。要将坐标区对象恢复为其基线缩放级别,请在坐标区内双击。

  • 滚轮 - 要放大,请向上滚动。要缩小,请向下滚动。

  • 键盘 - 要放大,请按向上箭头 (↑) 键。要缩小,请按向下箭头 (↓) 键。

不管当前交换模式如何,某些内置交互都默认处于启用状态。要禁用独立于缩放模式的内置缩放交互,请使用 disableDefaultInteractivity 函数。

示例

zoom 切换缩放模式。如果缩放模式处于禁用状态,则调用 zoom 将恢复最近使用的缩放选项 onxonyon

zoom(factor) 按指定的缩放因子缩放当前坐标区,而不影响缩放模式。通过将 factor 指定为大于 1 的值来放大,例如,zoom(3)。通过将 factor 指定为介于 0 和 1 之间的值来缩小,例如,zoom(0.5)

zoom(fig,___) 在上述任意语法的基础上设置指定图窗中所有坐标区的缩放模式。将附加参量指定为缩放模式选项或缩放因子。例如,要为图窗 fig 中的所有坐标区启用缩放模式,请使用 zoom(fig,"on")。要按因子 2 缩放所有坐标区,请使用 zoom(fig,2)

zoom(ax,___) 设置指定坐标区的缩放模式。将附加参量指定为缩放模式选项或缩放因子。例如,要为坐标区 ax 启用缩放模式,请使用 zoom(ax,"on") (自 R2023a 起)

在 R2025a 之前的版本中: 将此语法用于在 App 设计工具中创建的 App 或使用 uifigure 函数创建的 App。

z = zoom 为当前图窗创建一个 zoom 对象。此语法对于自定义缩放模式、移动和方向非常有用。

示例

z = zoom(fig) 为指定的图窗创建 zoom 对象。

示例

输入参量

全部展开

缩放模式选项,指定为下列值之一:

  • "on" - 启用缩放模式。

  • "off" - 禁用缩放模式。不管当前交换模式如何,某些内置交互都默认处于启用状态。要禁用独立于缩放模式的内置缩放交互,请使用 disableDefaultInteractivity 函数。

  • "reset" - 将当前缩放级别设置为基线缩放级别。在设置基线缩放级别后,调用 zoom out、双击坐标区或点击坐标区工具栏中的“还原视图” 按钮会将坐标区恢复为此缩放级别。

  • "out" - 将当前坐标区恢复为其基线缩放级别。

  • "xon" - 仅对 x 维度启用缩放模式。

  • "yon" - 仅对 y 维度启用缩放模式。

  • "toggle" - 切换缩放模式。如果缩放模式处于禁用状态,则 "toggle" 将恢复最近使用的缩放选项 "on""xon""yon"。使用此选项等效于不带任何参量调用 zoom

缩放因子,指定为正数。通过将 factor 指定为大于 1 的数字来放大。通过将 factor 指定为介于 0 和 1 之间的数字来缩小。在这种情况下,坐标区会按缩放因子的倒数进行缩小。

目标图窗,指定为 Figure 对象。指定目标图窗将为所有当前或将来的 Axes 子级设置模式。

目标坐标区,指定为 Axes 对象。

属性

全部展开

注意

如果您修改 zoom 对象的任一上述属性,则 MATLAB® 会在图窗上启用旧探索模式。有关详细信息,请参阅 enableLegacyExplorationModes

缩放模式状态,指定为 "on""off",或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 "on" 等效于 true"off" 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 OnOffSwitchState 类型的 on/off 逻辑值。

允许放大和缩小的维度,指定为下列值之一:

  • "both" - 允许同时在 x 维度和 y 维度上缩放。

  • "horizontal" - 仅允许在 x 维度上缩放。

  • "vertical" - 仅允许在 y 维度上缩放。

此属性仅影响二维视图中的坐标区,例如当您调用 view([0 90]) 时。要控制三维视图中的缩放维度,请使用 ZoomInteraction 对象。

缩放方向,指定为下列值之一:

  • "in" - 点击时放大。

  • "out" - 点击时缩小。

当缩放模式启用时,无论 Direction 的值如何,您都可以使用滚轮来放大或缩小。

右键点击时要执行的操作,指定为以下值之一:

  • "PostContextMenu" - 显示上下文菜单。

  • "InverseZoom" - 缩小。

设置 RightClickAction 属性可设置将来 zoom 对象的默认值。RightClickAction 的值在各 MATLAB 会话之间保留。

上下文菜单,指定为 ContextMenu 对象。使用此属性可在启用缩放模式的坐标区中通过右键点击来显示上下文菜单。使用 uicontextmenu 函数创建上下文菜单。

如果 RightClickAction 属性设置为 "InverseZoom",则此属性不起作用。

缩放隐藏回调,指定为下列值之一:

  • 函数句柄

  • 元胞数组,包含一个函数句柄和其他参量

  • 包含有效 MATLAB 命令或函数(在基础工作区中计算)的字符串标量或字符向量(不推荐)

使用此属性可隐藏在您定义的条件下的缩放。数值或逻辑输出 1 (true) 隐藏缩放,数值或逻辑输出 0 (false) 允许缩放。如果使用函数句柄指定此属性,则 MATLAB 将向回调函数传递两个参量:

  • axes - 您正在其中执行缩放操作的 Axes 对象。

  • eventData - 空参量。在函数定义中将其替换为波浪号字符 (~) 以指示不使用此参量。

如果使用函数句柄指定此属性,则必须将此函数的输出赋给变量。

有关回调的详细信息,请参阅Create Callbacks for Graphics Objects

缩放前要执行的函数,指定为下列值之一:

  • 函数句柄

  • 元胞数组,包含一个函数句柄和其他参量

  • 包含有效 MATLAB 命令或函数(在基础工作区中计算)的字符串标量或字符向量(不推荐)

使用此属性在开始缩放时执行代码。如果使用函数句柄指定此属性,则 MATLAB 将向回调函数传递两个参量:

  • figure - 您正在其中执行缩放操作的 Figure 对象。

  • axesStruct - 具有一个字段 Axes 的结构体,该字段包含您正在其中缩放的 Axes 对象。如果在回调函数中不使用此参量,请用波浪号字符 (~) 替换它。

有关回调的详细信息,请参阅Create Callbacks for Graphics Objects

在完成缩放后执行的函数,指定为下列值之一:

  • 函数句柄

  • 元胞数组,包含一个函数句柄和其他参量

  • 包含有效 MATLAB 命令或函数(在基础工作区中计算)的字符串标量或字符向量(不推荐)

使用此属性在完成缩放后执行代码。如果使用函数句柄指定此属性,则 MATLAB 将向回调函数传递两个参量:

  • figure - 您正在其中执行缩放操作的 Figure 对象。

  • axesStruct - 具有一个字段 Axes 的结构体,该字段包含您正在其中缩放的 Axes 对象。如果在回调函数中不使用此参量,请用波浪号字符 (~) 替换它。

有关回调的详细信息,请参阅Create Callbacks for Graphics Objects

此 属性 为只读。

创建 zoom 对象时指定的 Figure 对象。如果未指定图窗,则 FigureHandle 是创建 zoom 对象时的当前图窗。

旧模式,指定为 "on""off",或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 "on" 等效于 true"off" 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 OnOffSwitchState 类型的 on/off 逻辑值。有关详细信息,请参阅Legacy Exploration Modes

一旦此属性设置为 "on",您就无法将其更改回 "off"

在 R2025a 之前的版本中: 此属性仅适用于使用 uifigure 函数或在 MATLAB Online™ 中创建的图窗的 zoom 对象。将此属性设置为 "on" 会更改 UI 图窗中交互模式的行为,使其与传统图窗中模式的行为相匹配。有关详细信息,请参阅 enableLegacyExplorationModes

对象函数

注意

如果您为 zoom 对象调用任一上述对象函数,则 MATLAB 会在图窗上启用旧探索模式。有关详细信息,请参阅 enableLegacyExplorationModes

使用 zoom 对象函数自定义图窗中坐标区对象的缩放行为。对于所有这些函数,坐标区和缩放模式对象必须与同一图窗相关联。

setAllowAxesZoom

setAllowAxesZoom 函数设置缩放坐标区的权限。

如果对缩放对象 z 调用 setAllowAxesZoom(z,axes,tf) 并以坐标区对象向量 axes 和逻辑标量 tf 作为输入,将允许或禁止对坐标区对象执行缩放操作。

使用 setAllowAxesZoom 对坐标区启用缩放模式不会对图窗启用缩放模式。要实现此目的,请设置 zoom 对象的 Enable 属性。

注意

您可以通过设置坐标区的 InteractionOptions 属性的 ZoomSupported 属性来实现相同的功能,而无需进入旧探索模式。

isAllowAxesZoom

isAllowAxesZoom 函数用于查询缩放坐标区的权限。

如果对缩放对象 z 调用 tf = isAllowAxesZoom(z,axes) 并以坐标区对象向量 axes 作为输入,将返回与 axes 大小相同的逻辑数组 tftf 指示是否允许对坐标区对象执行缩放操作。

使用 isAllowAxesZoom 返回坐标区的缩放模式不会返回图窗的缩放模式。要实现此目的,请访问 zoom 对象的 Enable 属性。

注意

您可以通过查询坐标区的 InteractionOptions 属性的 ZoomSupported 属性来实现相同的功能,而无需进入旧探索模式。

setAxesZoomConstraint

setAxesZoomConstraint 函数设置坐标区的缩放维度。

如果对缩放对象 setAxesZoomConstraint(z,axes,d) 调用 z 并将坐标区对象向量 axes 和维度值标量 d 作为输入,则会将坐标区对象的缩放维度设置为以下维度值之一:"x""y""z""xy""xz""yz""unconstrained"

使用 setAxesZoomConstraint 设置坐标区的缩放维度不会设置图窗的缩放维度。要实现此目的,请设置缩放对象的 Motion 属性。

注意

您可以通过设置坐标区的 InteractionOptions 属性的 LimitsDimensions 属性来实现相同的功能,而无需进入旧探索模式。

getAxesZoomConstraint

getAxesZoomConstraint 函数返回坐标区的缩放维度。

如果对缩放对象 z 调用 d = getAxesZoomConstraint(z,axes) 并使用坐标区对象向量 axes 作为输入,则会返回元胞数组 d,指示每个坐标区对象的缩放维度。

使用 getAxesZoomConstraint 返回坐标区的缩放维度不会返回图窗的缩放维度。要实现此目的,请访问缩放对象的 Motion 属性。

注意

您可以通过查询坐标区的 InteractionOptions 属性的 LimitsDimensions 属性来实现相同的功能,而无需进入旧探索模式。

setAxes3DPanAndZoomStyle

setAxes3DPanAndZoomStyle 函数设置缩放样式。

如果对缩放对象 z 调用 setAxes3DPanAndZoomStyle(z,axes,s) 并将坐标区对象向量 axes 和缩放样式字符数组 s 作为输入,则会设置坐标区对象的缩放样式。默认情况下,缩放样式为 'limits',即通过修改坐标区范围进行缩放。将缩放样式指定为 'camera' 可通过修改相机视角进行缩放。

有关相机视角的详细信息,请参阅相机图形术语

getAxes3DPanAndZoomStyle

getAxes3DPanAndZoomStyle 函数返回缩放样式。

如果对缩放对象 z 调用 s = getAxes3DPanAndZoomStyle(z,axes) 并使用坐标区对象向量 axes 作为输入,则会返回元胞数组 s,指示每个坐标区对象的缩放样式。

setAxesZoomMotion(不推荐)

不推荐使用此函数。请改用 setAxesZoomConstraint

如果对缩放对象 setAxesZoomMotion(z,axes,d) 调用 z 并将坐标区对象向量 axes 和缩放维度 d 作为输入,则会将坐标区对象的缩放维度设置为以下维度值之一:"horizontal""vertical""both"

setAxesZoomMotion 设置的坐标区缩放维度与使用 Motion 属性设置的图窗缩放维度不同。

getAxesZoomMotion(不推荐)

不推荐使用此函数。请改用 getAxesZoomConstraint

如果对缩放对象 z 调用 d = getAxesZoomMotion(z,axes) 并使用坐标区对象向量 axes 作为输入,则会返回元胞数组 d,指示每个坐标区对象的缩放维度。

使用 getAxesZoomMotion 返回的坐标区缩放维度与使用 Motion 属性返回的图窗缩放维度不同。

示例

全部折叠

绘制曲面并启用缩放模式。点击“展开”坐标区工具栏 以查看坐标区工具栏。

surf(peaks)
zoom on

A surface with several peaks. The zoom button in the axes toolbar is selected.

通过点击最高峰值处将其放大。然后,设置基线缩放级别。将来调用 zoom out、双击坐标区或在坐标区工具栏中点击“还原视图” 按钮会将坐标区恢复为此基线缩放级别。

zoom reset

The surface zoomed into the tallest peak

通过点击再次放大最高峰值处。然后,通过缩小恢复为您设置的基线缩放级别。

zoom out

在分块图布局中创建四个坐标区,并为每个坐标区指定一种不同的缩放行为。然后,以交互方式缩放坐标区。

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

ax2 = nexttile;
plot(rand(3))
setAllowAxesZoom(z,ax2,false)

ax3 = nexttile;
surf(peaks)
setAxesZoomConstraint(z,ax3,"xy")

ax4 = nexttile;
contour(peaks)
setAxesZoomMotion(z,ax4,"horizontal")

使用 uicontextmenu 函数绘制曲面并创建上下文菜单。

surf(peaks)
cm = uicontextmenu;

A surface with several peaks

然后,向该菜单添加一个项目。指定标签和用于关闭图窗的回调。

m = uimenu(cm);
m.Label = "Close figure";
f = gcf;
m.Callback = @(src,event)close(f);

创建一个缩放对象。通过设置缩放对象的 ContextMenu 属性,将上下文菜单添加到缩放对象。然后,启用缩放模式。

z = zoom(f);
z.ContextMenu = cm;
z.Enable = "on";

通过右键点击并选择关闭图窗来关闭图窗。

详细信息

全部展开

替代功能

坐标区工具栏

对于某些图,通过点击坐标区工具栏中的“缩放” 按钮来启用缩放模式。

版本历史记录

在 R2006a 之前推出

全部展开