logo

F2

  • 教程
  • 组件API
  • 图表示例
  • 所有产品antv logo arrow
  • 5.10.0
  • 顶层 API - F2
  • 组件 - Component
  • 画布 - Canvas
  • 时间轴 - Timeline
  • 图表 - Chart
    • 图表 - Chart
    • 几何标记 - Geometry
    • 线 - Line
    • 区间 - Interval
    • 点 - Point
    • 面积 - Area
    • K 线图 - Candlestick
    • 坐标轴 - Axis
    • 图例 - Legend
    • 提示 - tooltip
    • 饼图标签 - PieLabel
    • 标注 - Guide
      • 标签标注 - TagGuide
      • 点标注 - PointGuide
      • 辅助线标注 - LineGuide
      • 矩形标注 - RectGuide
      • 图片标注 - ImageGuide
      • 文本标注 - TextGuide
      • 标注 - Guide
    • 滚动条 - ScrollBar
    • 放大镜 - Magnifier
  • 仪表盘 - Gauge
  • 旭日图 - Sunburst
  • 矩形树图 - Treemap

提示 - tooltip

上一篇
图例 - Legend
下一篇
饼图标签 - PieLabel

资源

Ant Design
Galacea Effects
Umi-React 应用开发框架
Dumi-组件/文档研发工具
ahooks-React Hooks 库
WeaveFox-前端智能研发

社区

体验科技专栏
seeconfSEE Conf-蚂蚁体验科技大会
weavefoxWeaveFox-智能研发技术社区

帮助

GitHub
StackOverflow

more products更多产品

Ant DesignAnt Design-企业级 UI 设计语言
yuque语雀-知识创作与分享工具
EggEgg-企业级 Node 开发框架
kitchenKitchen-Sketch 工具集
GalaceanGalacean-互动图形解决方案
weavefoxWeaveFox-前端智能研发
© Copyright 2026 Ant Group Co., Ltd..备案号:京ICP备15032932号-38

Loading...

Usage

import { Canvas, Chart, Line, Tooltip } from '@antv/f2';
const data = [
{ genre: 'Sports', sold: 5 },
{ genre: 'Strategy', sold: 10 },
{ genre: 'Action', sold: 20 },
{ genre: 'Shooter', sold: 20 },
{ genre: 'Other', sold: 40 },
];
<Canvas context={context}>
<Chart data={data}>
<Tooltip />
<Axis field="genre" />
<Line x="genre" y="sold" />
</Chart>
</Canvas>;

组成

TypeScript 类型定义

interface TooltipProps {
/** 是否显示 tooltip */
visible?: boolean;
/** 顶部边距,默认 '10px' */
padding?: string;
/** 显示事件,默认 'press' */
triggerOn?: 'press' | 'click';
/** 消失事件,默认 'pressend' */
triggerOff?: 'pressend';
/** 是否一直显示,默认 false */
alwaysShow?: boolean;
/** 是否显示十字线,默认 false */
showCrosshairs?: boolean;
/** 十字线类型,默认 'y' */
crosshairsType?: 'x' | 'y' | 'xy';
/** 十字线样式 */
crosshairsStyle?: LineStyleProps;
/** 是否显示辅助点,默认 false */
snap?: boolean;
/** 名称文本样式 */
nameStyle?: TextStyleProps;
/** 值文本样式 */
valueStyle?: TextStyleProps;
/** 背景样式 */
background?: RectStyleProps;
/** 是否显示数据项标记,默认 true */
showItemMarker?: boolean;
/** 数据项标记样式 */
itemMarkerStyle?: any;
/** 名称和值的连接字符串,默认 ': ' */
joinString?: string;
/** 是否显示 tooltip 标记背景,默认 false */
showTooltipMarker?: boolean;
/** tooltip 标记背景样式 */
markerBackgroundStyle?: any;
/** tooltip 标记样式 */
tooltipMarkerStyle?: any;
/** 是否显示 X 轴辅助信息 */
showXTip?: boolean;
/** X 轴辅助信息文本 */
xTip?: string | ((text: string, record: DataRecord) => string);
/** X 轴辅助信息文本样式 */
xTipTextStyle?: TextStyleProps;
/** X 轴辅助信息背景样式 */
xTipBackground?: RectStyleProps;
/** X 轴位置点类型,默认 'record' */
xPositionType?: 'record' | 'coord';
/** 是否显示 Y 轴辅助信息 */
showYTip?: boolean;
/** Y 轴辅助信息文本 */
yTip?: string | ((text: string, record: DataRecord) => string);
/** Y 轴辅助信息文本样式 */
yTipTextStyle?: TextStyleProps;
/** Y 轴辅助信息背景样式 */
yTipBackground?: RectStyleProps;
/** Y 轴位置点类型,默认 'record' */
yPositionType?: 'record' | 'coord';
/** 是否自定义内容,默认 false */
custom?: boolean;
/** 自定义文本内容渲染函数 */
customText?: (record: DataRecord) => JSX.Element;
/** 每个 tooltip 项的宽度 */
itemWidth?: number;
/** 默认显示的数据项 */
defaultItem?: any;
/** 选中数据改变时的回调 */
onChange?: (records: DataRecord[]) => void;
/** tooltip 显示时的回调 */
onShow?: () => void;
/** tooltip 隐藏时的回调 */
onHide?: () => void;
}
interface DataRecord {
/** 原始数据 */
origin: any;
/** 数据项名称 */
name: string;
/** 数据项值 */
value: string;
/** x 坐标 */
x: number;
/** y 坐标 */
y: number;
/** 颜色 */
color?: string;
/** x 字段名 */
xField: string;
/** y 字段名 */
yField: string;
/** 坐标信息 */
coord?: any;
[key: string]: any;
}

Props

属性类型默认值说明
基础配置
visibleboolean-是否显示 tooltip(不传时默认显示,设为 false 隐藏)
paddingstring'10px'顶部边距,用于计算坐标空间
triggerOn'press' | 'click''press'触发 tooltip 显示的事件
triggerOff'pressend''pressend'触发 tooltip 消失的事件
alwaysShowbooleanfalse是否一直显示(忽略 triggerOff 事件)
defaultItemany-默认显示的数据项,设置后会立即显示 tooltip
十字线配置
showCrosshairsbooleanfalse是否显示十字辅助线
crosshairsType'x' | 'y' | 'xy''y'十字线类型:x-水平线、y-垂直线、xy-双向
crosshairsStyleLineStyleProps见下方十字线样式配置
snapbooleanfalse是否在数据点位置显示辅助圆点
tooltipMarkerStyleany见下方辅助点的样式配置
内容样式配置
showItemMarkerbooleantrue是否在文本前显示数据项颜色标记
itemMarkerStyleany见下方数据项标记的样式
joinStringstring': '名称和值之间的连接字符串
nameStyleTextStyleProps见下方名称文本样式
valueStyleTextStyleProps见下方值文本样式
backgroundRectStyleProps见下方tooltip 背景样式
itemWidthnumber-每个 tooltip 项的宽度,用于控制自动换行
标记区域配置
showTooltipMarkerbooleanfalse是否显示 tooltip 标记背景区域
markerBackgroundStyleany见下方标记背景区域的样式(主要用于柱状图,尤其是分组柱状图)
X/Y 轴辅助信息
showXTipbooleanfalse是否在 X 轴位置显示辅助信息
xTipstring | (text, record) => string-X 轴辅助信息文本,支持函数自定义
xTipTextStyleTextStyleProps见下方X 轴辅助信息文本样式
xTipBackgroundRectStyleProps见下方X 轴辅助信息背景样式
xPositionType'record' | 'coord''record'X 轴位置点类型:record-按数据取点、coord-按坐标取点
showYTipbooleanfalse是否在 Y 轴位置显示辅助信息
yTipstring | (text, record) => string-Y 轴辅助信息文本,支持函数自定义
yTipTextStyleTextStyleProps见下方Y 轴辅助信息文本样式
yTipBackgroundRectStyleProps见下方Y 轴辅助信息背景样式
yPositionType'record' | 'coord''record'Y 轴位置点类型:record-按数据取点、coord-按坐标取点
自定义内容
custombooleanfalse禁用 tooltip 信息框渲染(十字线、辅助点、X/Y Tip 仍正常显示,onChange 等回调仍正常触发)
customText(record: DataRecord) => JSX.Element-自定义文本内容(在默认容器内,保留背景和标记)
回调函数
onChange(records: DataRecord[]) => void-tooltip 选中数据改变时的回调
onShow() => void-tooltip 显示时的回调(仅首次显示触发)
onHide() => void-tooltip 隐藏时的回调

样式属性类型说明

  • TextStyleProps: 文本属性
  • RectStyleProps: 通用属性
  • LineStyleProps: 线条属性

默认样式值

// 十字线默认样式
crosshairsStyle: {
stroke: 'rgba(0, 0, 0, 0.25)',
lineWidth: '2px',
}
// 背景默认样式
background: {
radius: '4px',
fill: 'rgba(0, 0, 0, 0.65)',
padding: ['6px', '10px'],
}
// 名称文本默认样式
nameStyle: {
fontSize: '24px',
fill: 'rgba(255, 255, 255, 0.65)',
textAlign: 'start',
textBaseline: 'middle',
}
// 值文本默认样式
valueStyle: {
fontSize: '24px',
fill: '#fff',
textAlign: 'start',
textBaseline: 'middle',
}
// 数据项标记默认样式
itemMarkerStyle: {
width: '12px',
radius: '6px',
symbol: 'circle',
lineWidth: '2px',
stroke: '#fff',
}
// X/Y Tip 默认样式
xTipTextStyle / yTipTextStyle: {
fontSize: '24px',
fill: '#fff',
}
xTipBackground / yTipBackground: {
radius: '4px',
fill: 'rgba(0, 0, 0, 0.65)',
padding: ['6px', '10px'],
}

用法示例

基础用法

<Canvas context={context}>
<Chart data={data}>
<Tooltip />
<Axis field="genre" />
<Line x="genre" y="sold" />
</Chart>
</Canvas>

配置十字线

<Tooltip
showCrosshairs={true}
crosshairsType="xy"
snap={true}
crosshairsStyle={{
stroke: '#326BFB',
lineDash: [2, 2],
}}
/>

自定义样式

<Tooltip
background={{
fill: 'rgba(50, 107, 251, 0.75)',
radius: '8px',
padding: ['10px', '16px'],
}}
nameStyle={{
fontSize: '26px',
fill: 'rgba(255, 255, 255, 0.8)',
}}
valueStyle={{
fontSize: '28px',
fill: '#fff',
fontWeight: 'bold',
}}
joinString=": "
/>

显示 X/Y 轴辅助信息

<Tooltip
showXTip={true}
showYTip={true}
showCrosshairs={true}
crosshairsType="xy"
xTip={(text, record) => `${text}年`}
yTip={(text, record) => `${text}万元`}
xTipBackground={{
fill: '#326BFB',
radius: '4px',
}}
yTipBackground={{
fill: '#326BFB',
radius: '4px',
}}
/>

自定义文本内容

仅自定义 tooltip 中的文本内容,保留背景框、标记等默认样式。

<Tooltip
alwaysShow={true}
defaultItem={data[0]}
customText={(record) => {
const { origin } = record;
return (
<text
style={{
text: `类型:${origin.genre}\n销量:${origin.sold}`,
fontSize: 12,
fill: '#fff',
}}
/>
);
}}
/>

隐藏信息框(custom)

设置 custom={true} 可隐藏 tooltip 信息框,但十字线、辅助点、X/Y Tip 和 onChange 回调仍正常工作。

<Tooltip
custom={true}
showCrosshairs={true}
crosshairsType="xy"
snap={true}
onChange={(records) => {
// 回调正常触发,可通过 records 获取数据
const active = records?.[0];
const { origin, xField, yField, x, y, color, ...otherAttrs } = active || {};
console.log('选中数据:', origin);
}}
/>

注意:此属性用于仅需要辅助线/点而不需要信息框的场景。正常情况下请使用 customText 自定义文本内容。

监听数据变化

<Tooltip
onChange={(records) => {
console.log('当前选中的数据:', records);
// records[0].name - 数据项名称
// records[0].value - 数据项值
// records[0].origin - 原始数据对象
}}
onShow={() => {
console.log('tooltip 已显示');
}}
onHide={() => {
console.log('tooltip 已隐藏');
}}
/>

默认显示指定数据

<Tooltip
alwaysShow={true}
defaultItem={data[0]} // 初始显示第一条数据的 tooltip
showCrosshairs={true}
snap={true}
/>

分组图表的标记区域

<Tooltip
showTooltipMarker={true}
markerBackgroundStyle={{
fill: '#CCD6EC',
opacity: 0.3,
padding: '6px',
}}
/>

方法

通过 ref 可以调用以下方法:

show(point)

在指定坐标位置显示 tooltip。

show(point: { x: number; y: number }): void

示例:

import { createRef } from '@antv/f2';
const tooltipRef = createRef();
<Canvas context={context}>
<Chart data={data}>
<Tooltip ref={tooltipRef} />
<Line x="genre" y="sold" />
</Chart>
</Canvas>
// 手动显示 tooltip
tooltipRef.current?.show({ x: 100, y: 200 });

hide()

隐藏 tooltip。

hide(): void

示例:

// 手动隐藏 tooltip
tooltipRef.current?.hide();