cqwcns 发表于 2023-2-19 14:20

JS,EChart自定义tooltip的问题

本帖最后由 cqwcns 于 2023-2-19 14:22 编辑

如下代码,我们有两组数据,分别是得分(arrScore)和排名(arrRank)。


我把得分数据渲染到图表中。
但在图表的tooltip中我希望能分别显示得分和排名(如图所示)。


我的想法是如何把这个排名数据加入图表的option中,使得formatter的params能获得排名数据,在通过params.seriesIndex等值,获得对应排名。


各位大佬有什么实现的方法,请指教,感谢。



代码:
// 得分
const arrScore = [
    ["部门", "参评率", "满意率", "重复率", "投诉率"],
    ["广东省", 120, 160, 20, 20, 40],
    ["台湾省", 80, 20, 0, 0, 100],
    ["北京市", 60, 40, 40, 40, 180],
    ["上海市", 20, 80, 60, 80, 240],
    ["四川省", 40, 60, 80, 100, 280],
    ["福建省", 100, 100, 100, 60, 360]
];

// 排名
const arrRank = [
    ["部门", "参评率", "满意率", "重复率", "投诉率"],
    ["广东省", 1, 1, 3, 1, 2],
    ["台湾省", 4, 4, 5, 6, 4],
    ["北京市", 3, 2, 1, 3, 5],
    ["上海市", 2, 3, 4, 2, 3],
    ["四川省", 6, 6, 6, 5, 1],
    ["福建省", 5, 5, 2, 4, 6]
];

// 创建系列
const objSeries = {
    type: 'bar', stack: 'total', label: {
      show: true
    },
    emphasis: {
      focus: 'series'
    }
},
    arrSeries = [];
for (let i = 0; i < arrScore.length - 1; i++) {
    arrSeries.push(objSeries);
}
// 创建配置
option = {
    legend: {
      show: true
    },
    label: {
      show: true
    },
    tooltip: {
      trigger: 'item',
      axisPointer: {
            type: 'cross',
            label: {}
      },
      formatter: (params) => {
            console.log(params)
            let tip = `<div class="p-b-3">${params.marker} <span class="font-bold">${params.seriesName}</span> (${params.name})</div>`;
            tip += `<div class="flex justify-between p-b-3"><span>排名</span> <span class="font-bold">${'想这里显示排名'}</span></div>`
            tip += `<div class="flex justify-between"><span>得分</span> <span class="font-bold">${parseFloat(params.value.toFixed(2))}</span></div>`
            return tip
      }
    },
    dataset: {
      source: arrScore
    },
    xAxis: {},
    yAxis: { type: 'category' },
    series: arrSeries
};

DEMO链接:
https://echarts.apache.org/examp ... UAfdAfm5W1XdKtLRYgA


直接访问DEMO链接,可以跳转到官方示例页面测试。
或者复制我的代码,到官方示例页面中复现,谢谢。

厉小超 发表于 2023-2-19 16:00

这样的吗

厉小超 发表于 2023-2-19 16:01

${arrRank.slice(1)}

Su、 发表于 2023-2-19 19:32

本帖最后由 Su、 于 2023-2-19 19:33 编辑

```
    console.log(arrRank);
      let tip = `<div class="p-b-3">${params.marker} <span class="font-bold">${params.seriesName}</span> (${params.name})</div>`;
      tip += `<div class="flex justify-between p-b-3"><span>排名</span> <span class="font-bold">${arrRank}</span></div>`;
      tip += `<div class="flex justify-between"><span>得分</span> <span class="font-bold">${parseFloat(
      params.value.toFixed(2)
      )}</span></div>`;
      return tip;
```

页: [1]
查看完整版本: JS,EChart自定义tooltip的问题