一个echarts图中显示两个环形图 并且使用同一个legend后 两个环形图的tooltip联动显示
时间: 2024-02-11 21:06:01 浏览: 163
要在一个echarts图中显示两个环形图并且使用同一个legend,可以使用echarts的多系列(multi-series)功能。具体步骤如下:
1. 在echarts的option中,定义两个系列(series),每个系列都是一个环形图。并且给每个系列设置相同的legend名称,如:
```
series: [
{
name: '环形图1',
type: 'pie',
...
},
{
name: '环形图2',
type: 'pie',
...
}
],
legend: {
data: ['图例1', '图例2'],
...
}
```
2. 确保两个系列的数据项(series.data)中的每个数据对象具有相同的name属性,如:
```
series: [
{
name: '环形图1',
type: 'pie',
data: [
{value: 335, name: '图例1'},
{value: 310, name: '图例2'},
...
]
},
{
name: '环形图2',
type: 'pie',
data: [
{value: 335, name: '图例1'},
{value: 310, name: '图例2'},
...
]
}
],
```
3. 开启tooltip功能,并设置相同的tooltip.trigger参数,如:
```
tooltip: {
trigger: 'item',
...
}
```
4. 在页面加载完成后,使用echarts的on方法,监听第一个环形图的鼠标移动事件,并通过dispatchAction方法调用第二个环形图的tooltip显示方法,如:
```
myChart1.on('mousemove', function(params) {
if (params.componentType === 'series' && params.seriesIndex === 0) {
var dataIndex = params.dataIndex;
myChart2.dispatchAction({
type: 'showTip',
seriesIndex: 0,
dataIndex: dataIndex
});
}
});
```
5. 在第一个环形图的鼠标移出事件中,调用第二个环形图的tooltip隐藏方法,如:
```
myChart1.on('mouseout', function(params) {
myChart2.dispatchAction({
type: 'hideTip'
});
});
```
6. 在第二个环形图中同样地监听鼠标移动事件,并实现相同的逻辑即可。
注意事项:
1. 两个环形图的数据要保持一致,即每个数据项的name和value属性要一致。
2. 两个环形图的tooltip的formatter函数要保持一致,以显示相同的内容。
3. 在第一个环形图中,要判断当前鼠标所在的组件类型和系列类型是否正确,以避免误操作。
4. 如果有多个环形图需要联动显示tooltip,可以使用类似的方法实现。
阅读全文