echarts 监听点击柱状图

echart监听柱状图(包含阴影部分)

html代码

 <div class="box-echart" style="height:35vh;width:100%;">
   <v-chart
       v-if="isShowChart"
       class="echart"
       style="height:35vh;width:100%"
       :autoresize="true"
       :loading="echartloading"
       :option="echartOption"
       ref="echartsRef" />
</div>

js部分代码

 var colorList =  ['rgba(46, 199, 201, 1)', 'rgba(182, 162, 222, 1)',
  '#5ab1ef', '#769fcd', '#f08a5d','#66c6ba','#f38181'];
mounted(){
    //给柱状图添加点击事件\
    this.$nextTick(() =>{
      setTimeout(()=>{
        let echartDom = document.querySelector(".box-container"+ ' .box-echart'+ " .echart");
        let myChart = echarts.getInstanceByDom(echartDom);
        myChart.getZr().off('click'); //触发点击事件前先关闭点击事件 防止多次触发点击事件
        myChart.getZr().on('click',(params) =>{
          //点击整条柱状图都能触发点击事件,包含非数据部分
          let pointInPixel = [params.offsetX, params.offsetY];
          if (myChart.containPixel('grid', pointInPixel)) {
            // 获取柱状图的下标,以柱状图数据
            let xIndex = myChart.convertFromPixel({ seriesIndex: 0 }, [params.offsetX, params.offsetY])[0];
            let data = this.echartOption.series[0].data[xIndex];
          }
        });

      },1000);

    });

  },
 echartOption: {
     title: {
         text: 'title',
         left: 'center', //标题的位置 默认是left,其余还有center、right属性
     },
     tooltip: {
       trigger: 'axis',
       axisPointer:{
        type: 'shadow',
        },
       formatter: params => {
            var relVal = ''
            for (var i = 0, l = params.length; i < l; i++) {
              relVal += params[i].marker + params[0].name + ' : ' + params[i].value + '条'
            }
            return relVal
          }
        },
    grid: {
       left: '5%',
       top: '15%',
       right: '5%',
       bottom: '22%',
       containLabel: true
        },
   dataZoom: [
      {
        type: 'slider',
        show: true,
        startValue:0, //数据窗口范围的起始数值
        endValue:10, //数据窗口范围的结束数值。
     },

     ],
   toolbox: {
     feature: {
            saveAsImage: {}
      }
      },
   xAxis: {
      type: 'category',
      data: []
     },
   yAxis: {
      type: 'value',
     },
   series: [{
      data: [],
      // barWidth: 50,
      barMaxWidth: '50',
      type: 'bar',
      itemStyle: {
         normal: {
         color: function(params) {
                //循环调用
                return colorList[params.dataIndex%colorList.length]
              },
            }
          },
        }
        ]
      },
  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是使用echarts实现两个柱状图联动的方法: 1. 首先,需要在HTML文件中创建两个div,分别用于显示两个柱状图,例如: ```html <div id="chart1" style="width: 600px;height:400px;"></div> <div id="chart2" style="width: 600px;height:400px;"></div> ``` 2. 在JavaScript文件中,需要使用echarts.init()方法初始化两个柱状图实例,并设置各自的option选项,例如: ```javascript let chart1 = echarts.init(document.getElementById('chart1')); let chart2 = echarts.init(document.getElementById('chart2')); let option1 = { // 第一个柱状图的option选项 // ... }; let option2 = { // 第二个柱状图的option选项 // ... }; chart1.setOption(option1); chart2.setOption(option2); ``` 3. 接下来,需要使用echarts.connect()方法将两个柱状图实例连接起来,例如: ```javascript echarts.connect([chart1, chart2]); ``` 4. 最后,需要在柱状图点击事件中,获取到当前点击的数据,并使用echarts.dispatchAction()方法触发另一个柱状图的对应数据的高亮显示,例如: ```javascript chart1.on('click', function(params) { // 获取当前点击的数据 let dataIndex = params.dataIndex; // 触发chart2对应数据的高亮显示 chart2.dispatchAction({ type: 'highlight', seriesIndex: 0, dataIndex: dataIndex }); }); chart2.on('click', function(params) { // 获取当前点击的数据 let dataIndex = params.dataIndex; // 触发chart1对应数据的高亮显示 chart1.dispatchAction({ type: 'highlight', seriesIndex: 0, dataIndex: dataIndex }); }); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

The outsider�

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

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

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

打赏作者

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

抵扣说明:

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

余额充值