如何在ECharts折线图中实现鼠标悬停显示数据总数的Tooltip触发功能

939 阅读2分钟

在 ECharts 中,tooltip.trigger 决定了 tooltip 触发的方式。对于折线图(line chart),通常 tooltip.trigger 可以设置为 'item''axis' 或 'none'

  • 'item':数据项图形触发,主要在柱状图、饼图等使用,但也可以用于折线图,当每个数据点(数据项)较大时可能比较适用。
  • 'axis':坐标轴触发,主要用在折线图、散点图等。当鼠标移动到折线图的任意位置(不仅仅是数据点上)时,都会触发 tooltip 显示该位置对应的所有数据系列的值。
  • 'none':不触发。

如果你想在鼠标放到折线图上时显示对应数据点的总数内容(假设你有一个额外的“总数”数据),你需要自定义 tooltip 的 formatter 函数。但请注意,ECharts 默认情况下不会直接计算一个数据系列的总数。你需要自己在 formatter 函数中根据数据来计算总数。

以下是一个基本的例子,展示了如何在折线图的 tooltip 中显示自定义的总数内容:

option = {  
    // ... 其他配置项  
    tooltip: {  
        trigger: 'axis', // 使用坐标轴触发  
        formatter: function (params, ticket, callback) {  
            // 假设 params[0].data 是当前鼠标位置对应的数据点值  
            // 你需要在这里根据 params 来计算你的“总数”  
              
            // 示例:我们假设有一个外部变量 total 来表示总数  
            var total = /* 从你的数据源或其他地方获取的总数 */;  
  
            // 格式化 tooltip 的内容  
            var html = [];  
            params.forEach(function (param) {  
                html.push(param.seriesName + ': ' + param.value + '<br/>');  
            });  
            html.push('总数: ' + total); // 添加总数  
  
            return html.join('');  
        }  
    },  
    series: [  
        // ... 你的数据系列  
    ]  
};

在这个例子中,formatter 函数会根据 params(一个包含当前位置所有系列数据的数组)来构建 tooltip 的内容。我们假设了一个外部变量 total 来表示总数,但你需要根据实际情况来获取这个值。如果你的总数是根据图表数据动态计算的,你可以在 formatter 函数中进行这个计算。