控制图交互性
您可以交互式地探索和编辑绘制的数据,以改进数据的可视化显示或显示关于数据的其他信息。可用的交互取决于轴的内容,但通常包括缩放、平移、旋转、数据提示、数据刷刷和恢复原始视图。
某些类型的交互可以通过axes工具栏进行。当您将鼠标悬停在图表区域上时,工具栏将出现在坐标轴的右上角。
其他类型的交互被内置到坐标轴中,可以通过手势进行,例如拖动来平移或滚动来缩放。这些交互与坐标轴工具栏中的交互是分开控制的。
当你创建一个图表时,你可以通过以下几种方式控制可用的交互集:
在R2018a和以前的版本中,许多交互选项出现在图工具栏中,而不是轴工具栏中。另外,在以前的版本中,没有任何交互被构建到坐标轴中。
显示或隐藏轴工具栏
要显示或隐藏轴工具栏,请设置可见
的属性AxesToolbar
对象“上”
或“关闭”
,分别。例如,隐藏当前轴的工具栏:
Ax = gca;ax.Toolbar.Visible =“关闭”;
自定义轴工具栏
控件可自定义坐标轴工具栏中可用的选项axtoolbar
而且axtoolbarbtn
功能。
例如,为轴工具栏添加一个自定义状态按钮,用于打开和关闭轴网格线。首先,创建一个名为mycustomstatebutton.m
。在程序文件中:
绘制随机数据。
控件为轴创建一个工具栏,其中具有放大、缩小和恢复视图的选项
axtoolbar
函数。属性将空状态按钮添加到工具栏
axtoolbarbtn
函数。返回ToolbarStateButton
对象。属性为状态按钮指定图标、工具提示和回调函数
图标
,工具提示
,ValueChangedFcn
属性。本例使用图标,必须先将其保存为名为
mygridicon.png
在你的路上。
运行程序文件时,单击图标以打开和关闭网格线。
函数Mycustomstatebutton plot(rand(5)) ax = gca;TB = axtoolbar(ax,{“zoomin”,“zoomout”,“restoreview”});BTN = axtoolbarbtn(tb,“状态”);btn。图标=“mygridicon.png”;btn。工具提示=“网格线”;btn。ValueChangedFcn = @customcallback;函数customcallback (src、事件)开关src。价值情况下“关闭”event.Axes.XGrid =“关闭”;event.Axes.YGrid =“关闭”;event.Axes.ZGrid =“关闭”;情况下“上”event.Axes.XGrid =“上”;event.Axes.YGrid =“上”;event.Axes.ZGrid =“上”;结束结束结束
启用或禁用内置交互
要控制是否在图表中启用一组内置交互,请使用disableDefaultInteractivity
而且enableDefaultInteractivity
功能。有时MATLAB®自动禁用内置交互。例如,对于具有特殊功能的图表,或者当您实现某些回调(如WindowScrollWheelFcn
回调。
自定义内置交互
大多数类型的轴都包含一组默认的内置交互,这些交互对应于特定的手势。可用的交互取决于轴的内容。大多数笛卡尔轴都包括滚动以缩放、悬停或单击以显示数据提示、拖动以平移(在二维视图中)或旋转(在三维视图中)的交互。您可以用一组新的交互替换默认集,但是不能访问或修改默认集中的任何交互。
要替换默认交互,请设置的相互作用
属性设置为交互对象数组。从下表中选择一个兼容的交互对象组合。若要删除轴上的所有交互,请将属性设置为空数组([]
).
交互对象 | 描述 | 兼容的交互 |
---|---|---|
panInteraction |
通过拖动在图表中进行平移。 | 除了regionZoomInteraction 而且rotateInteraction |
rulerPanInteraction |
通过拖动轴来平移轴。 | 所有 |
zoomInteraction |
通过滚动或捏来放大。 | 所有 |
regionZoomInteraction |
通过拖动缩放到矩形区域。 (只适用于二维笛卡儿图) |
除了panInteraction 而且rotateInteraction |
rotateInteraction |
拖动图表旋转图表。 | 除了panInteraction 而且regionZoomInteraction |
dataTipInteraction |
通过悬停、单击或轻按显示数据提示。 | 所有 |
例如,创建一个包含1000个分散点的图。
X = 1:500;Y = randn(1500);Y2 = 5*randn(1500) + 10;情节(x, y,“。”, x, y2,“。”)
默认情况下,该图表有一组交互,其中包括在图表区域内拖动到平移。但是,由于图表有密集的点集合,更有用的交互集可能包括允许您放大到图表的特定区域的交互集。的regionZoomInteraction
对象提供此功能。属性的数组替换当前轴的默认交互集regionZoomInteraction
对象。
Ax = gca;斧子。交互= [zoomInteraction regionZoomInteraction rulerPanInteraction];
现在,在绘图区域内拖动将定义一个需要放大的矩形区域。