Main Content

datatip

创建数据提示

自 R2019b 起

说明

数据提示是显示关于单个数据点的信息的小文本框。默认情况下,数据提示包括在图创建过程中指定的与单个数据点对应的数据。

创建对象

通过点击图(例如线图和散点图)中的数据点以交互方式创建数据提示。您还可以使用 datatip 函数创建数据提示。

描述

datatip(target) 在指定图(如线图或散点图)的第一个绘图数据点上创建数据提示。

示例

datatip(target,x,y)xy 指定的二维绘图数据点上创建数据提示。如果指定近似坐标,则 datatip 会在最近的数据点上创建数据提示。

datatip(target,x,y,z)xyz 指定的三维绘图数据点上创建数据提示。如果指定近似坐标,则 datatip 会在最近的数据点上创建数据提示。

示例

datatip(target,'DataIndex',n) 通过设置 DataIndex 属性,在第 n 个绘图数据点上创建数据提示。

datatip(___,Name,Value) 使用一个或多个名称-值对组参量指定属性。请在所有其他参量后指定名称-值对组。

dt = datatip(___) 返回 DataTip 对象。您可以在上述语法中指定任何输入参量组合。此语法可用于控制数据提示的属性。

输入参量

全部展开

目标,指定为具有 DataTipTemplate 属性的对象。具有 DataTipTemplate 属性的对象示例包括 LineHistogramSurfaceFunctionLine 对象。

数据提示的第一个坐标,指定为标量。第一个坐标的解释取决于坐标区的类型:

  • 对于笛卡尔坐标区,第一个坐标是 x 轴位置,使用与数据相同的单位。

  • 对于极坐标区,第一个坐标是以弧度表示的极坐标角 θ。

  • 对于地理坐标区,第一个坐标是纬度(以度为单位)。

默认情况下,如果指定数据点的近似坐标,则 datatip 函数会在最近的数据点上创建数据提示。最近的数据点取决于图的类型。例如,在线图上,最近的点离近似坐标的欧几里德距离最小。

要在数据点之间创建数据提示,请将 SnapToDataVertex 属性设置为 'off'

数据提示的第二个坐标,指定为标量。第二个坐标的解释取决于坐标区的类型:

  • 对于笛卡尔坐标区,第二个坐标是 y 轴位置,使用与数据相同的单位。

  • 对于极坐标区,第二个坐标是半径 r,单位与数据相同。

  • 对于地理坐标区,第二个坐标是经度(以度为单位)。

默认情况下,如果指定数据点的近似坐标,则 datatip 函数会在最近的数据点上创建数据提示。最近的数据点取决于图的类型。例如,在线图上,最近的点离近似坐标的欧几里德距离最小。

要在数据点之间创建数据提示,请将 SnapToDataVertex 属性设置为 'off'

数据提示的第三个坐标,指定为标量。对于笛卡尔坐标区,第三个坐标是 z 轴位置,使用与数据相同的单位。

默认情况下,如果指定数据点的近似坐标,则 datatip 函数会在最近的数据点上创建数据提示。最近的数据点取决于图的类型。例如,在线图上,最近的点离近似坐标的欧几里德距离最小。

要在数据点之间创建数据提示,请将 SnapToDataVertex 属性设置为 'off'

属性

全部展开

数据提示

绘图数据的索引,指定为正整数。

例如,二维对象在笛卡尔坐标区上的绘图数据包含在其 XDataYData 属性中。当您指定数据提示的 DataIndex 时,MATLAB® 通过对 XDataYData 进行索引在图上定位数据提示。

使用此属性创建数据提示时,请不要指定 xyz 参量。

示例: datatip(chart,'DataIndex',3) 在第三个绘图数据点上创建数据提示。

在最近的数据点上显示,指定为下列值之一:

  • 'on' - 在最近的数据点显示数据提示。最近的数据点取决于图的类型。例如,在线图上,最近的点与指定位置的欧几里德距离最小。

  • 'off' - 在图上最近的指定位置显示数据提示,即使数据提示位于数据点之间也是如此。

相对于 DataIndex 的偏移量,指定为标量。使用此属性在 Line 对象上的相邻数据点之间创建数据提示,方法是:将 SnapToDataVertex 设置为 'off',将 InterpolationFactor 设置为 0 到 1 之间的标量。

例如,通过将 InterpolationFactor 指定为 0.5,在一条直线上两个相邻数据点的正中间创建数据提示。

x = 1:4;
y = 2.*x;
p = plot(x,y,'-*');
dt = datatip(p,'DataIndex',2, ...
               'Location','southeast', ...
               'SnapToDataVertex','off', ...
               'InterpolationFactor',0.5);

Line plot with data points displayed as asterisks and a data tip between asterisks

并非所有类型的对象上的数据提示都支持 InterpolationFactor

相对于数据点的位置,指定为下列值之一:

描述外观
'northeast'数据点的右上角

Sample data tip at the top-right corner of the data point

'northwest'数据点的左上角

Sample data tip at the top-left corner of the data point

'southeast'数据点的右下角

Sample data tip at the bottom-right corner of the data point

'southwest'数据点的左下角

Sample data tip at the bottom-left corner of the data point

示例: dt.Location = 'southwest';

Location 属性值的选择模式,指定为下列值之一:

  • 'auto' - datatip 函数自动选择位置。

  • 'manual' - 如果您设置 Location 属性,LocationMode 属性将自动更改为 'manual'

此 属性 为只读。

数据提示内容,指定为元胞数组。默认情况下,对于二维数据提示,数据提示内容是 2×1 元胞数组,对于三维数据提示,数据提示内容是 3×1 元胞数组。

要向数据提示内容添加更多行,请使用 dataTipTextRow

字体

字体名称,指定为支持的字体名称或 "FixedWidth"。要正确显示和打印文本,您必须选择系统支持的字体。默认字体取决于您的操作系统和区域设置。

要使用在任何区域设置中都有较好显示效果的等宽字体,请使用 "FixedWidth"。等宽字体依赖于根 FixedWidthFontName 属性。设置根 FixedWidthFontName 属性会导致立即更新显示方式以使用新字体。

FontName 属性的选择模式,指定为下列值之一:

  • 'auto' - 使用与包含数据提示的图关联的 DataTipTemplate 对象的 FontName 属性相同的值。

  • 'manual' - 如果您设置 FontName 属性,FontNameMode 属性将自动更改为 'manual'

字体大小,指定为大于 0 的标量值(以磅为单位)。一磅等于 1/72 英寸。

字体大小的选择模式,指定为下列值之一:

  • 'auto' - 使用与包含数据提示的图关联的 DataTipTemplate 对象的 FontSize 属性相同的值。

  • 'manual' - 如果您设置 FontSize 属性,FontSizeMode 属性将自动更改为 'manual'

字符倾斜,指定为 'normal''italic'

并非所有字体都有两种字体样式。因此,斜体可能看上去和常规字体一样。

FontAngle 属性的选择模式,指定为下列值之一:

  • 'auto' - 使用与包含数据提示的图关联的 DataTipTemplate 对象的 FontAngle 属性相同的值。

  • 'manual' - 如果您设置 FontAngle 属性,FontAngleMode 属性将自动更改为 'manual'

文本解释器,指定为下列值之一:

  • 'tex' - 使用 TeX 标记子集解释字符。

  • 'latex' - 使用 LaTeX 标记解释字符。

  • 'none' - 显示字面字符。

TeX 标记

默认情况下,MATLAB 支持一部分 TeX 标记。使用 TeX 标记可添加下标和上标,修改字体类型和颜色,并在文本中包括特殊字符。

修饰符会一直作用到文本结尾,但上标和下标除外,因为它们仅修饰下一个字符或花括号中的字符。当您将解释器设置为 'tex' 时,支持的修饰符如下所示。

修饰符描述示例
^{ }上标'text^{superscript}'
_{ }下标'text_{subscript}'
\bf粗体'\bf text'
\it斜体'\it text'
\sl伪斜体(通常与斜体相同)'\sl text'
\rm常规字体'\rm text'
\fontname{specifier}字体名称 - 将 specifier 替换为字体系列的名称。您可以将此说明符与其他修饰符结合使用。'\fontname{Courier} text'
\fontsize{specifier}字体大小 - 将 specifier 替换为以磅为单位的数值标量值。'\fontsize{15} text'
\color{specifier}字体颜色 - 将 specifier 替换为以下颜色之一:redgreenyellowmagentablueblackwhitegraydarkGreenorangelightBlue'\color{magenta} text'
\color[rgb]{specifier}自定义字体颜色 - 将 specifier 替换为三元素 RGB 三元组。'\color[rgb]{0,0.5,0.5} text'

下表列出了 'tex' 解释器所支持的特殊字符。

字符序列符号字符序列符号字符序列符号

\alpha

α

\upsilon

υ

\sim

~

\angle

\phi

ϕ

\leq

\ast

*

\chi

χ

\infty

\beta

β

\psi

ψ

\clubsuit

\gamma

γ

\omega

ω

\diamondsuit

\delta

δ

\Gamma

Γ

\heartsuit

\epsilon

ϵ

\Delta

Δ

\spadesuit

\zeta

ζ

\Theta

Θ

\leftrightarrow

\eta

η

\Lambda

Λ

\leftarrow

\theta

θ

\Xi

Ξ

\Leftarrow

\vartheta

ϑ

\Pi

Π

\uparrow

\iota

ι

\Sigma

Σ

\rightarrow

\kappa

κ

\Upsilon

ϒ

\Rightarrow

\lambda

λ

\Phi

Φ

\downarrow

\mu

µ

\Psi

Ψ

\circ

º

\nu

ν

\Omega

Ω

\pm

±

\xi

ξ

\forall

\geq

\pi

π

\exists

\propto

\rho

ρ

\ni

\partial

\sigma

σ

\cong

\bullet

\varsigma

ς

\approx

\div

÷

\tau

τ

\Re

\neq

\equiv

\oplus

\aleph

\Im

\cup

\wp

\otimes

\subseteq

\oslash

\cap

\in

\supseteq

\supset

\lceil

\subset

\int

\cdot

·

\o

ο

\rfloor

\neg

¬

\nabla

\lfloor

\times

x

\ldots

...

\perp

\surd

\prime

´

\wedge

\varpi

ϖ

\0

\rceil

\rangle

\mid

|

\vee

\langle

\copyright

©

LaTeX 标记

要使用 LaTeX 标记,请将解释器设置为 'latex'。对于行内模式,用单美元符号 ($) 将标记括起来。对于显示模式,用双美元符号 ($$) 将标记括起来。

LaTeX 模式示例结果
行内

'$\int_1^{20} x^2 dx$'

Equation with LaTeX inline mode

显示

'$$\int_1^{20} x^2 dx$$'

Equation with LaTeX display mode

显示的文本将使用默认的 LaTeX 字体样式。FontNameFontWeightFontAngle 属性不起任何作用。要更改字体样式,请使用 LaTeX 标记。

用于 LaTeX 解释器的文本最多可以包含 1200 个字符。对于多行文本,请在此数量的基础上每行减少约 10 个字符。

有关使用 TeX 和 LaTeX 的示例,请参阅图文本中的希腊字母和特殊字符。有关 LaTeX 系统的详细信息,请访问 LaTeX Project 网站:https://www.latex-project.org/

Interpreter 属性的选择模式,指定为下列值之一:

  • 'auto' - 使用与包含数据提示的图关联的 DataTipTemplate 对象的 Interpreter 属性相同的值。

  • 'manual' - 如果您设置 Interpreter 属性,InterpreterMode 属性将自动更改为 'manual'

笛卡尔坐标数据

沿 x 轴的位置,指定为标量,使用与数据相同的单位。

沿 y 轴的位置,指定为标量,使用与数据相同的单位。

沿 z 轴的位置,指定为标量,使用与数据相同的单位。

极坐标数据

半径,指定为标量,使用与数据相同的单位。

此属性仅适用于极坐标图上的数据提示。

角度,指定为标量,以度为单位。

此属性仅适用于极坐标图上的数据提示。

地理坐标数据

纬度,指定为标量,以度为单位。

此属性仅适用于地理图上的数据提示。

经度,指定为标量,以度为单位。

此属性仅适用于地理图上的数据提示。

交互性

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

  • "on" - 显示对象。

  • "off" - 隐藏对象而不删除它。您仍然可以访问不可见对象的属性。

上下文菜单,指定为提供数据提示选项的 ContextMenu 对象。您不能设置该属性。

选择状态,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true,'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

  • 'on' - 已选择。如果您在绘图编辑模式下点击对象,则 MATLAB 会将其 Selected 属性设置为 'on'。如果 SelectionHighlight 属性也设置为 'on',则 MATLAB 将在对象周围显示选择句柄。

  • 'off' - 未选择。

选择时显示选择句柄,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true,'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

  • 'on' - 在 Selected 属性设置为 'on' 时显示选择句柄。

  • 'off' - 永远不显示选择句柄,即使 Selected 属性设置为 'on' 也是如此。

回调

鼠标点击回调,指定为下列值之一:

  • 函数句柄

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

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

使用此属性在您点击对象时执行代码。如果使用函数句柄指定此属性,则 MATLAB 在执行回调时将向回调函数传递两个参量:

  • 点击的对象 - 从回调函数中访问点击的对象的属性。

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

有关如何使用函数句柄定义回调函数的详细信息,请参阅Create Callbacks for Graphics Objects

注意

如果 PickableParts 属性设置为 'none' 或者 HitTest 属性设置为 'off',则不执行此回调。

对象创建函数,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参量。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

有关将回调指定为函数句柄、元胞数组或字符向量的详细信息,请参阅Create Callbacks for Graphics Objects

此属性指定要在 MATLAB 创建对象时执行的回调函数。MATLAB 将在执行 CreateFcn 回调之前初始化所有属性值。如果不指定 CreateFcn 属性,则 MATLAB 执行默认的创建函数。

对现有组件设置 CreateFcn 属性没有任何作用。

如果将此属性指定为函数句柄或元胞数组,则可以使用回调函数的第一个参量访问正在创建的对象。否则,使用 gcbo 函数访问该对象。

对象删除函数,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参量。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

有关将回调指定为函数句柄、元胞数组或字符向量的详细信息,请参阅Create Callbacks for Graphics Objects

此属性指定在 MATLAB 删除对象时要执行的回调函数。MATLAB 在销毁对象的属性之前执行 DeleteFcn 回调。如果不指定 DeleteFcn 属性,则 MATLAB 执行默认的删除函数。

如果将此属性指定为函数句柄或元胞数组,则可以使用回调函数的第一个参量访问要删除的对象。否则,使用 gcbo 函数访问该对象。

回调执行控件

回调中断,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

此属性确定是否可以中断运行中回调。有以下两种回调状态要考虑:

  • 运行中回调是当前正在执行的回调。

  • 中断回调是试图中断运行中回调的回调。

每次执行处理回调队列的命令时,MATLAB 都会确定回调中断行为。这些命令包括 drawnowfigureuifiguregetframewaitforpause

如果运行中回调不包含上述命令之一,则不会发生中断。MATLAB 首先完成执行运行中回调,然后执行中断回调。

如果运行中回调确实包含上述命令之一,则由运行中回调所属对象的 Interruptible 属性来确定是否发生中断:

  • 如果 Interruptible 的值为 'off',则不会发生中断。此时,由中断回调所属对象的 BusyAction 属性确定中断回调是被丢弃还是添加到回调队列中。

  • 如果 Interruptible 的值为 'on',则发生中断。下次 MATLAB 处理回调队列时,它会停止运行中回调的执行,并执行中断回调。在中断回调完成后,MATLAB 将继续执行运行中回调。

注意

回调的中断和执行在以下情况下会有不同的表现:

  • 如果中断回调是 DeleteFcnCloseRequestFcnSizeChangedFcn 回调,则无论是否存在 Interruptible 属性值都会发生中断。

  • 如果运行中回调当前正在执行 waitfor 函数,则无论是否存在 Interruptible 属性值都会发生中断。

  • 如果中断回调由 Timer 对象所有,则回调将根据调度执行,而不考虑 Interruptible 属性值。

注意

发生中断时,MATLAB 不保存属性状态或显示内容。例如,gcagcf 命令返回的对象可能会在另一个回调执行时发生改变。

回调排队,指定为 'queue''cancel'BusyAction 属性决定 MATLAB 如何处理中断回调的执行。有以下两种回调状态要考虑:

  • 运行中回调是当前正在执行的回调。

  • 中断回调是试图中断运行中回调的回调。

BusyAction 属性仅在同时满足以下两个条件时才确定回调排队行为:

在这些情况下,由中断回调所属对象的 BusyAction 属性确定 MATLAB 如何处理中断回调。以下是 BusyAction 属性的可能值:

  • 'queue' - 将中断回调放入队列中,以便在运行中回调执行完毕后进行处理。

  • 'cancel' - 不执行中断回调。

捕获鼠标点击的能力,指定为以下值之一:

  • 'visible' - 当对象可见时,捕获鼠标点击。Visible 属性必须设置为 'on',而且您必须点击 DataTip 对象中具有定义颜色的部分。不能点击包含设置为 'none' 的相关颜色属性的部分。HitTest 属性决定是 DataTip 对象响应点击还是前代响应点击。

  • 'all' - 无论是否可见都捕获鼠标点击。Visible 属性可以设置为 'on''off',而且您可以点击 DataTip 对象中没有颜色的部分。HitTest 属性决定是 DataTip 对象响应点击还是前代响应点击。

  • 'none' - 无法捕获鼠标点击。点击 DataTip 对象会将点击操作通过它传递给图窗窗口当前视图中该对象下方的对象。HitTest 属性没有任何作用。

对捕获的鼠标点击的响应,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true,'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

  • 'on' - 触发 DataTip 对象的 ButtonDownFcn 回调。如果您已定义 ContextMenu 属性,则调用上下文菜单。

  • 'off' - 触发满足以下条件之一的 DataTip 对象的最近前代的回调:

    • HitTest 属性设置为 'on'

    • PickableParts 属性所设置的值允许前代捕获鼠标点击

注意

PickableParts 属性决定 DataTip 对象是否可以捕获鼠标点击。如果无法捕获,则 HitTest 属性没有任何作用。

此 属性 为只读。

删除状态,以 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值形式返回。

DeleteFcn 回调开始执行时,MATLAB 会将 BeingDeleted 属性设置为 'on'BeingDeleted 属性将一直保持 'on' 设置状态,直到组件对象不再存在为止。

在查询或修改对象之前,请先检查其 BeingDeleted 属性的值,以确认它不是待删除项。

父级/子级

父级,指定为具有 DataTipTemplate 属性的对象。具有数据提示模板的对象示例包括 LineHistogramSurfaceFunctionLine 对象。通过设置此属性将数据提示移至另一个对象。

对象没有任何子级。您不能设置该属性。

父级的 Children 属性中对象句柄的可见性,指定为下列值之一:

  • "on" - 对象句柄始终可见。

  • "off" - 对象句柄始终不可见。该选项用于防止另一函数无意中对其进行更改。将 HandleVisibility 设置为 "off" 可在执行该函数时暂时隐藏句柄。

  • "callback" - 对象句柄在回调或回调所调用的函数中可见,但在从命令行调用的函数中不可见。此选项阻止通过命令行访问对象,但允许回调函数访问对象。

如果父级的 Children 属性中未列出该对象,则通过搜索对象层次结构或查询句柄属性获取对象句柄的函数无法返回该对象。此类函数的示例包括 getfindobjgcagcfgconewplotclaclfclose 函数。

隐藏的对象句柄仍有效。将根 ShowHiddenHandles 属性设置为 "on" 以列出所有对象句柄,而不管其 HandleVisibility 属性设置如何。

标识符

此 属性 为只读。

图形对象的类型,以 'datatip' 形式返回。使用该属性在绘制层次结构中查找指定类型的所有对象,例如,在使用 findobj 搜索该类型时。

对象标识符,指定为字符向量或字符串标量。您可以指定唯一的 Tag 值作为对象的标识符。如果需要访问您代码中其他位置的对象,可以使用 findobj 函数基于 Tag 值搜索对象。

用户数据,指定为任何 MATLAB 数组。例如,您可以指定标量、向量、矩阵、元胞数组、字符数组、表或结构体。使用此属性存储对象上的任意数据。

如果您在 App 设计工具中工作,请在该 App 中创建公共或私有属性以共享数据,而不是使用 UserData 属性。有关详细信息,请参阅在用 App 设计工具创建的 App 内共享数据

示例

全部折叠

使用示例文件 patients.xls 创建一个表。然后,在气泡图中绘制 SystolicDiastolicWeight 变量。然后,添加数据提示。

tbl = readtable("patients.xls");
b = bubblechart(tbl,"Systolic","Diastolic","Weight");

dt = datatip(b);

绘制数据散点图,并将 sz 定义为指定标记大小的向量。返回 Scatter 对象。

然后,通过指定 x 坐标和 y 坐标,在特定数据点上创建数据提示。

x = linspace(1,10,10);
y = x.^2;
sz = x;
sc = scatter(x,y,sz);

dt = datatip(sc,7,49);

在条形图上绘制数据,并返回 Bar 对象。然后,通过指定 DataIndex 名称-值对组参量,在第七个条形上创建数据提示。

x = 1900:10:2000;
y = [75 91 105 123.5 131 120 107 96 82 73 70];
b = bar(x,y);

dt = datatip(b,'DataIndex',7);

在散点图上绘制数据,并返回 Scatter 对象。通过将 x = 3 和 y = 0 指定为近似坐标,在 (3,0) 附近的数据点上创建数据提示。使用近似坐标创建数据提示时,数据提示会出现在最近的数据点上。

x = linspace(0,2*pi,20);
y = sin(x);
sc = scatter(x,y);
grid on;

dt = datatip(sc,3,0);

绘制数据并返回 Line 对象。在每个绘制的数据点上显示一个标记。然后,通过指定数据提示的 xy 坐标,并将 SnapToDataVertex 名称-值对组参量指定为 'off',在两个数据点之间创建数据提示。

x = linspace(1,10,10);
y = 2.*x;
p = plot(x,y,'-*');

dt = datatip(p,3.5,7,'SnapToDataVertex','off');

提示

  • 通过点击图中的数据点以交互方式创建数据提示。要将以交互方式创建的数据提示赋给变量,请使用 findobj 函数。

    dt = findobj(chart,'Type','datatip');

  • 要删除数据提示,请使用 delete 函数。

    delete(dt);

版本历史记录

在 R2019b 中推出

全部展开