echarts 实现多图联动显示tooltip

2 篇文章 0 订阅

1、需求描述:有时候工作中会使用到图一移动时同时控制图二中的tooltip进行显示;

2、所用配置项:tooltip.triggerOn : "none",然后手动触发tooltip; 以下是以官方示例为例的demo,代码如下:

a:vue文件代码:

<template>
  <div class="echart-container">
    <div id="chart1"></div>
    <div id="chart2"></div>
  </div>
</template>
<script>
import * as echarts from "echarts";

const option = {
  xAxis: {
    type: "category",
    data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
  },
  yAxis: {
    type: "value",
  },
  series: [
    {
      data: [150, 230, 224, 218, 135, 147, 260],
      type: "line",
    },
  ],
};
export default {
  data: () => ({
    options1: {},
    options2: {},
    chart1: null,
    chart2: null,
  }),
  mounted() {
    this.init();
  },
  methods: {
    init() {
      this.chart1 = echarts.init(document.getElementById("chart1"));
      this.chart2 = echarts.init(document.getElementById("chart2"));
      this.refreshChart1();
      this.refreshChart2();
    },
    refreshChart1() {
      const opt = {
        ...option,
        tooltip: {
          trigger: "axis",
          formatter: (data) => {
            const { dataIndex } = data[0];
            console.log(data, dataIndex);
            this.chart2.dispatchAction({
              type: "showTip",
              dataIndex,
              seriesIndex: 0,
            });
            return data[0].value;
          },
        },
      };
      this.chart1.setOption(opt);
    },
    refreshChart2() {
      const opt = {
        ...option,
        color: ["green"],
        tooltip: {
          trigger: "axis",
          triggerOn: "none",
        },
      };
      this.chart2.setOption(opt);
    },
  },
};
</script>
<style lang="less">
#chart1,
#chart2 {
  width: 100%;
  height: 350px;
  margin: 10px;
  border: 1px solid #dedede;
}
</style>

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
实现两个环形图的tooltip联动显示,需要使用echarts的事件机制。具体步骤如下: 1. 在两个环形图的配置项中,都开启tooltip,并设置相同的tooltip.trigger参数,如: ``` tooltip: { trigger: 'item', ... } ``` 2. 在页面加载完成后,使用echarts的on方法,监听第一个环形图的鼠标移动事件,如: ``` myChart1.on('mousemove', function(params) { if (params.componentType === 'series' && params.seriesType === 'pie') { // 获取第一个环形图当前鼠标所在的数据项索引 var dataIndex = params.dataIndex; // 调用第二个环形图的tooltip显示方法 myChart2.dispatchAction({ type: 'showTip', seriesIndex: 0, dataIndex: dataIndex }); } }); ``` 3. 在第一个环形图的鼠标移出事件中,调用第二个环形图的tooltip隐藏方法,如: ``` myChart1.on('mouseout', function(params) { myChart2.dispatchAction({ type: 'hideTip' }); }); ``` 4. 同样地,在第二个环形图中也需要监听鼠标移动事件,并实现相同的逻辑,即在第二个环形图中显示第一个环形图的tooltip。 注意事项: 1. 两个环形图的数据要保持一致,即每个数据项的name和value属性要一致。 2. 两个环形图的tooltip的formatter函数要保持一致,以显示相同的内容。 3. 在第一个环形图中,要判断当前鼠标所在的组件类型和系列类型是否正确,以避免误操作。 4. 如果有多个环形图需要联动显示tooltip,可以使用类似的方法实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天府之绝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值