Tooltip 作为 F2 的插件,如要使用,请将其注册如 Chart 类或者 chart 实例。
如果你默认加载的是完整的 F2 代码,那么 Tooltip 已经注册至 Chart 类中,如果您采用动态引用的策略,那么需要先将该组件注册入 Chart 类或者 Chart 实例。
const F2 = require('@antv/f2/lib/core');const Tooltip = require('@antv/f2/lib/plugin/tooltip');F2.Chart.plugins.register(Tooltip); // 方式一:全局注册// 方式二:具体的 chart 实例注册const chart = new F2.Chart({id: 'canvas',plugins: Tooltip});
API
chart.tooltip(false); // 关闭 tooltipchart.tooltip({alwaysShow: false, // 当移出触发区域,是否仍显示提示框内容,默认为 false,移出触发区域 tooltip 消失,设置为 true 可以保证一直显示提示框内容offsetX: 0, // x 方向的偏移offsetY: 0, // y 方向的偏移triggerOn: [ 'touchstart', 'touchmove' ], // tooltip 出现的触发行为,可自定义,用法同 legend 的 triggerOntriggerOff: 'touchend', // 消失的触发行为,可自定义showTitle: false, // 是否展示标题,默认不展示showCrosshairs: false, // 是否显示辅助线,点图、路径图、线图、面积图默认展示crosshairsStyle: {stroke: 'rgba(0, 0, 0, 0.25)',lineWidth: 2}, // 配置辅助线的样式showTooltipMarker: true, // 是否显示 tooltipMarkertooltipMarkerStyle: {fill: '#fff' // 设置 tooltipMarker 的样式},background: {radius: 2,fill: '#1890FF',padding: [ 6, 10 ]}, // tooltip 内容框的背景样式titleStyle: {fontSize: 24,fill: '#fff',textAlign: 'start',textBaseline: 'top'}, // tooltip 标题的文本样式配置,showTitle 为 false 时不生效nameStyle: {fontSize: 24,fill: '#fff',textAlign: 'start',textBaseline: 'middle'}, // tooltip name 项的文本样式配置valueStyle: {fontSize: 24,fill: '#fff',textAlign: 'start',textBaseline: 'middle'}, // tooltip value 项的文本样式配置showItemMarker: true, // 是否展示每条记录项前面的 markeritemMarkerStyle: {radius: 7,symbol: 'circle',lineWidth: 2,stroke: '#fff'}, // 每条记录项前面的 marker 的样式配置custom: {Boolean}, // 是否自定义 tooltip 提示框onShow(obj) {// obj: { x, y, title, items }}, // tooltip 显示时的回调函数onHide(obj) {// obj: { x, y, title, items }}, // tooltip 隐藏时的回调函数onChange(obj) {// obj: { x, y, title, items }}, // tooltip 内容发生改变时的回调函数crosshairsType: {String}, // 辅助线的种类showXTip: {Boolean}, // 是否展示 X 轴的辅助信息showYTip: {Boolean}, // 是否展示 Y 轴的辅助信息xTip: {Object}/{Function}, // X 轴辅助信息的文本样式yTip: {Object}/{Function, // Y 轴辅助信息的文本样式xTipBackground: {Object}, // X 轴辅助信息的背景框样式yTipBackground: {Object}, // Y 轴辅助信息的背景框样式snap: {Boolean} // 是否将辅助线准确定位至数据点});
以下为 F2 3.3 版本 Tooltip 新增配置项:

| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
crosshairsType |
String | ‘y’ | 配置辅助线的类型,可选值为:’x’,’y’,’xy’。 |
showXTip |
Boolean | false | x 轴辅助信息的开关,默认关闭不展示。 |
showYTip |
Boolean | false | y 轴辅助信息的开关,默认关闭不展示。 |
xTip |
Object/Function | 配置 x 轴辅助信息的文本样式,可以是回调函数,用于格式化文本。 | |
yTip |
Object/Function | 配置 y 轴辅助信息的文本样式,可是回调函数,用于格式化文本。 | |
xTipBackground |
Object | ```javascript |
{ radius: 1, fill: ‘rgba(0, 0, 0, 0.65)’, padding: [ 3, 5 ] }
| 配置 x 轴辅助信息的背景框样式。 || `yTipBackground` | Object | ```javascript{radius: 1,fill: 'rgba(0, 0, 0, 0.65)',padding: [ 3, 5 ]}
| 配置 y 轴辅助信息的背景框样式。 |
| snap | Boolean | false | 是否将辅助线准确定位至数据点,默认为 false。 |
xTip yTip 回调函数用法
chart.tooltip({// 回调函数用法// 参数: val,yTip 显示的文本内容yTip(val) {// 返回值必须是对象return {val: val.toFixed(2)};},// 对象用法,直接定义文本的显示样式xTip: {fontSize: 10, // 字体大小fill: '#1890ff' // 字体颜色}});
示例
在移动端,我们经常会将 tooltip 同 legend 一起使用,这个时候我们就可以通过配置 custom 属性来实现。(手机端观看)

const data =[{ name: 'London', 月份: 'Jan.', 月均降雨量: 18.9 },{ name: 'London', 月份: 'Feb.', 月均降雨量: 28.8 },{ name: 'London', 月份: 'Mar.', 月均降雨量: 39.3 },{ name: 'London', 月份: 'Apr.', 月均降雨量: 81.4 },{ name: 'London', 月份: 'May.', 月均降雨量: 47 },{ name: 'London', 月份: 'Jun.', 月均降雨量: 20.3 },{ name: 'London', 月份: 'Jul.', 月均降雨量: 24 },{ name: 'London', 月份: 'Aug.', 月均降雨量: 35.6 },{ name: 'Berlin', 月份: 'Jan.', 月均降雨量: 12.4 },{ name: 'Berlin', 月份: 'Feb.', 月均降雨量: 23.2 },{ name: 'Berlin', 月份: 'Mar.', 月均降雨量: 34.5 },{ name: 'Berlin', 月份: 'Apr.', 月均降雨量: 99.7 },{ name: 'Berlin', 月份: 'May.', 月均降雨量: 52.6 },{ name: 'Berlin', 月份: 'Jun.', 月均降雨量: 35.5 },{ name: 'Berlin', 月份: 'Jul.', 月均降雨量: 37.4 },{ name: 'Berlin', 月份: 'Aug.', 月均降雨量: 42.4 }];const chart = new F2.Chart({id: 'mountNode',pixelRatio: window.devicePixelRatio,width: 400,height: 260});chart.source(data);chart.tooltip({custom: true, // 自定义 tooltip 内容框onChange: function(obj) {const legend = chart.get('legendController').legends.top[0]; // 获取 legendconst tooltipItems = obj.items;const legendItems = legend.items;const map = {};legendItems.map(item => {map[item.name] = F2.Util.mix({}, item);});tooltipItems.map(item => {const { name, value } = item;if (map[name]) {map[name].value = value;}});legend.setItems(Object.values(map));},onHide(tooltip) {const legend = chart.get('legendController').legends.top[0];legend.setItems(chart.getLegendItems().country);}});chart.interval().position('月份*月均降雨量').color('name').adjust({type: 'dodge',marginRatio: 0.05});chart.render();
DEMO
| 场景描述 | demo |
|---|---|
snap: true 辅助线准确定位至数据点 |
![]() |
| 自定义 HTML tooltip | ![]() |
| 初始化显示 tooltip | ![]() |
| 自定义样式 | ![]() |
| 带标题的 tooltip | ![]() |
| 内容项垂直布局 | ![]() |
| 十字辅助线 | ![]() |







