echarts实现自动轮播展示tooltip
时间: 2023-07-11 16:26:56 浏览: 141
要实现 ECharts 中 Tooltip 的自动轮播展示效果,可以通过设置 Tooltip 的 `trigger` 为 `'none'`,然后在 `formatter` 中自定义 Tooltip 的内容,并使用 JavaScript 的 `setInterval` 定时更新 Tooltip 的内容即可。
具体步骤如下:
1. 设置 `tooltip.trigger` 为 `'none'`,这样 Tooltip 不会跟随鼠标移动,而是需要手动触发。
```
tooltip: {
trigger: 'none',
formatter: function(params) {
// 定义 Tooltip 显示的内容
const tooltipList = [
`Tooltip 1: ${params[0].value}`,
`Tooltip 2: ${params[1].value}`,
`Tooltip 3: ${params[2].value}`
];
// 使用全局变量记录当前显示的 Tooltip 索引
if (typeof window.tooltipIndex === 'undefined') {
window.tooltipIndex = 0;
} else {
window.tooltipIndex = (window.tooltipIndex + 1) % tooltipList.length;
}
// 返回当前 Tooltip 的内容
return tooltipList[window.tooltipIndex];
}
}
```
2. 在 ECharts 初始化完成后,使用 JavaScript 的 `setInterval` 函数定时触发 Tooltip 显示,并使用 `dispatchAction` 方法更新 Tooltip 的内容。
```
// 在 ECharts 初始化完成后,定时触发 Tooltip 显示
const chart = echarts.init(document.getElementById('chart'));
chart.setOption(option);
setInterval(() => {
chart.dispatchAction({
type: 'showTip',
seriesIndex: 0,
dataIndex: window.tooltipIndex
});
window.tooltipIndex = (window.tooltipIndex + 1) % option.series[0].data.length;
}, 2000);
```
需要注意的是,由于 Tooltip 的内容是通过 JavaScript 的定时器更新的,因此在配置 ECharts 图表时需要将 `tooltip.show` 设置为 `false`,避免默认的 Tooltip 显示与自定义的 Tooltip 冲突。
完整的 ECharts 配置代码如下:
```
option = {
tooltip: {
show: false,
trigger: 'none',
formatter: function(params) {
const tooltipList = [
`Tooltip 1: ${params[0].value}`,
`Tooltip 2: ${params[1].value}`,
`Tooltip 3: ${params[2].value}`
];
if (typeof window.tooltipIndex === 'undefined') {
window.tooltipIndex = 0;
} else {
window.tooltipIndex = (window.tooltipIndex + 1) % tooltipList.length;
}
return tooltipList[window.tooltipIndex];
}
},
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: [
{
name: 'Value',
type: 'line',
data: [820, 932, 901, 934, 1290, 1330, 1320]
}
]
};
// 在 ECharts 初始化完成后,定时触发 Tooltip 显示
const chart = echarts.init(document.getElementById('chart'));
chart.setOption(option);
setInterval(() => {
chart.dispatchAction({
type: 'showTip',
seriesIndex: 0,
dataIndex: window.tooltipIndex
});
window.tooltipIndex = (window.tooltipIndex + 1) % option.series[0].data.length;
}, 2000);
```
阅读全文