echarts堆叠图tooltip提示框,鼠标移入时只显示当前区域的数据。
在echarts堆叠图中,鼠标移入不显示同一个轴内的所有数据,只显示当前name下的所有数据
·
需求
由于请求到的数据除了name和value以外,还有其它的一些数据,所以当鼠标移入时,tooltip提示框内必须显示当前name下的所有数据;echarts官网有堆叠图的示例,但是鼠标移入后,tooltip提示框会显示同一个轴内的的所有数据,这并不符合我们的实际需求。
下面是echarts官网的示例
想要做到上述需求,就必须找到当前鼠标所在位置的数据。但是,在tooltip.formatter中找了好久都没能找到对应的数据;于是我转变思路,是不是能够通过对比鼠标的位置来找到当前name下的数据。
xisPointer: {
type: "cross",
label: {
formatter: (params)=> {
if (params.seriesData.length === 0) {
this.coordinate = params.value;
}
},
},
},
然后我去echarts的 官方文档 中找到了tooltip的一个配置项xisPointer,鼠标移入时打印他的params发现,当seriesData为空时,它的value值为当前鼠标在图内的坐标,而且最重要的是,axisPointer会先formatter一步触发,那就意味着,我们能够拿到coordinate的值对formatter进行处理。
在formatter中使用coordinate的时候我发现,formatter中的params列表长度与coordinate的值有一定关系,即越靠近X轴对应的series,在数组中的位置越靠前,累加当前series.data的值与coordinate进行对比,就能拿到当前鼠标所在位置的值
formatter: (params) => {
let res = "",
sum = 0;
for (let i = 0; i < params.length; i++) {
if (params[i].value > 0) {
let series = params[i];
sum += Number(series.data);
if (sum >= this.coordinate) {
console.log(Number(series.data));
console.log( this.coordinate);
res =
series.axisValue +
"<br/>" +
series.marker +
series.seriesName +
":" +
series.data +
"<br/>";
return formatttip(
dataSource.ydata[series.dataIndex][series.seriesIndex],
res
);
}
}
}
},
更多推荐
已为社区贡献1条内容
所有评论(0)