本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

对图的交互进行控制

您可以交互式探查和编辑绘图数据,以改善数据的视觉效果或显示有关数据的其他信息。可用的交互操作取决于坐标区的内容,但通常包括缩放、平移、旋转、数据提示、数据刷亮以及还原原始视图。

有些类型的交互可通过坐标区工具栏使用。将鼠标悬停在图区域上时,工具栏会显示在坐标区的右上角。

其他交互类型已内置于坐标区中,并可通过手势使用,例如拖动平移或滚动缩放。这些交互的控制与坐标区工具栏中交互的控制是分开的。

创建图时,可以通过多种方式控制可用的交互集:

在 R2018a 和之前的版本中,许多交互选项显示在图窗工具栏而不是坐标区工具栏上。此外,在以前的版本中,坐标区中没有内置任何交互。

显示或隐藏坐标区工具栏

要显示或隐藏坐标区工具栏,请将 AxesToolbar 对象的 Visible 属性相应设置为 'on''off'。例如,隐藏当前坐标区的工具栏:

ax = gca;
ax.Toolbar.Visible = 'off';

自定义坐标区工具栏

您可以使用 axtoolbaraxtoolbarbtn 函数自定义坐标区工具栏上的可用选项。

注意

实时编辑器的图窗中不会显示自定义工具栏。要查看自定义工具栏,请在单独的图窗窗口中打开图窗。

例如,为坐标区工具栏添加自定义状态按钮,以打开和关闭坐标区网格线。首先,创建一个名为 mycustomstatebutton.m 的程序文件。在该程序文件中:

  • 绘制随机数据图。

  • 使用 axtoolbar 函数为坐标区创建一个工具栏,其中包含放大、缩小和还原视图的选项。

  • 使用 axtoolbarbtn 函数向工具栏添加一个空状态按钮。返回 ToolbarStateButton 对象。

  • 通过设置 IconTooltipValueChangedFcn 属性,指定状态按钮的图标、工具提示和回调函数。此示例使用 图标,此图标必须先作为图像文件保存到您的计算机路径中并命名为 mygridicon.png

运行程序文件时,点击该图标即可打开和关闭网格线。

function mycustomstatebutton

plot(rand(5))
ax = gca;
tb = axtoolbar(ax,{'zoomin','zoomout','restoreview'});

btn = axtoolbarbtn(tb,'state');
btn.Icon = 'mygridicon.png';
btn.Tooltip = 'Grid Lines';
btn.ValueChangedFcn = @customcallback;

    function customcallback(src,event)
        switch src.Value
            case 'off'
                event.Axes.XGrid = 'off';
                event.Axes.YGrid = 'off';
                event.Axes.ZGrid = 'off';
            case 'on'
                event.Axes.XGrid = 'on';
                event.Axes.YGrid = 'on';
                event.Axes.ZGrid = 'on';
        end
    end

end

启用或禁用内置交互

要控制是否在图中启用某内置交互集,请使用 disableDefaultInteractivityenableDefaultInteractivity 函数。有时 MATLAB® 会自动禁用内置交互。例如,对于包含特殊功能的图,或在实现某些回调(例如 WindowScrollWheelFcn)时,可能会禁用内置交互。

自定义内置交互

大多数类型的坐标区包含默认的内置交互集,这些交互对应于特定的手势。可用的交互取决于坐标区的内容。大多数笛卡尔坐标区包含以下交互:滚动缩放、悬停或点击显示数据提示,以及拖动平移(在二维视图中)或旋转(在三维视图中)。您可以将默认集替换为新的交互集,但不能访问或修改默认集中的任何交互。

注意

在实时编辑器中不支持自定义或替换内置交互。

要替换默认交互,请将坐标区的 Interactions 属性设为交互对象数组。从下表中选择兼容的交互对象组合。要从坐标区删除所有交互,请将该属性设置为空数组 ([])。

交互对象说明兼容的交互
panInteraction通过拖动操作在图中平移。regionZoomInteractionrotateInteraction 以外的全部交互
rulerPanInteraction通过拖动坐标轴对其进行平移。全部
zoomInteraction通过滚动或捏合手指进行缩放。全部
regionZoomInteraction通过拖动操作放大矩形区域。
(仅适用于二维图)
panInteractionrotateInteraction 以外的全部交互
rotateInteraction通过拖动图对其进行旋转。panInteractionregionZoomInteraction 以外的全部交互
dataTipInteraction通过悬停、单击或点击显示数据提示。全部

例如,创建一幅包含 1000 个散点的绘图。

x = 1:500;
y = randn(1,500);
y2 = 5*randn(1,500) + 10;
plot(x,y,'.',x,y2,'.')

默认情况下,此绘图提供的交互支持图区域内的拖动平移。但由于该绘图包含大量密集的点,支持放大绘图特定区域的交互会更加有用。regionZoomInteraction 对象提供此功能。将当前坐标区的默认交互集替换为包括 regionZoomInteraction 对象的数组。

ax = gca;
ax.Interactions = [zoomInteraction regionZoomInteraction rulerPanInteraction];

现在,在绘图区域内拖动鼠标会定义一个需要放大的矩形目标区域。

另请参阅

函数

属性

相关主题