谷歌散点图指定点始终显示Tooltip及禁用其他点交互问题
实现ECharts散点图部分点Tooltip永久显示+其余点禁用交互
当然可以搞定这个需求!我来给你一步步拆解实现思路和具体代码,保证你能快速用上。
核心思路
要实现这个效果,我们需要分两步走:
- 手动触发并维持指定点的Tooltip显示(因为ECharts没有原生的“永久显示Tooltip”配置)
- 让非目标点完全不响应任何鼠标交互(点击、hover都不行)
具体代码实现
首先,我们先给数据打标记,区分出需要始终显示Tooltip的点:
// 示例数据:给需要固定Tooltip的点加showTooltip: true标记 const scatterData = [ { value: [15, 25], showTooltip: true }, { value: [30, 40], showTooltip: true }, { value: [50, 65], showTooltip: true }, { value: [20, 35] }, { value: [40, 55] }, { value: [60, 70] } ];
接下来是图表的配置和核心逻辑:
// 初始化图表 const chart = echarts.init(document.getElementById('your-chart-dom')); const option = { tooltip: { trigger: 'item', // 改为item触发,方便我们手动控制 formatter: (params) => { return `坐标:(${params.value[0]}, ${params.value[1]})`; } }, xAxis: { type: 'value' }, yAxis: { type: 'value' }, series: [ { type: 'scatter', data: scatterData, // 给目标点加特殊样式,方便区分 itemStyle: { color: (params) => params.data.showTooltip ? '#ff6347' : '#4682b4' }, // 关键:非目标点设置为silent,完全禁用交互 silent: (params) => !params.data.showTooltip, // 取消选中样式的干扰,因为我们不需要点击选中效果 select: { itemStyle: { opacity: 1 } } } ] }; chart.setOption(option); // 手动触发指定点的Tooltip显示 function showPersistentTooltips() { scatterData.forEach((item, index) => { if (item.showTooltip) { chart.dispatchAction({ type: 'showTip', seriesIndex: 0, dataIndex: index }); } }); } // 初始化完成后立即显示固定Tooltip showPersistentTooltips(); // 监听图表重绘事件,确保重绘后Tooltip不会消失 chart.on('rendered', showPersistentTooltips); // 窗口resize时延迟触发,避免图表未重绘完成导致Tooltip偏移 window.addEventListener('resize', () => { setTimeout(showPersistentTooltips, 100); });
关键细节说明
silent属性:这里用函数形式返回布尔值,只有标记了showTooltip: true的点才会响应鼠标事件,其余点完全静默,实现“禁用点击/hover”的效果。dispatchAction('showTip'):通过手动触发Tooltip显示,再配合rendered事件监听,保证图表重绘(比如窗口缩放、数据更新)后,固定的Tooltip能重新显示出来。- 样式区分:给目标点设置不同的颜色,让用户能直观区分哪些点是特殊的。
内容的提问来源于stack exchange,提问作者Nabeel
相关产品推荐
相关产品推荐

