ECharts柱形图数据差距过大触发点击事件

目录

前言

一、普通点击事件

二、使用getZr()点击


前言

在项目开发中,由于一些数据量差距过大,导致偏小的值的点击事件难以触发,此时我们可以不用传统的点击事件,而是用可以包括背景区域的点击事件来触发。相当于点击整个坐标轴区域都能触发点击事件而不只是点击已有的数据形成的柱体


一、普通点击事件

在下图中如果想点击柱体触发点击事件就比较困难,因为数据差距过大,导致柱体面积很小,不利于点击

chart.on 点击事件只能接收有数据部分的点击事件, 柱子上方无法响应, 没有数据的柱子无法响应.

TypeScript 复制代码
                 chart.on('click', (params: any) => {
                  });

二、使用getZr()点击

使用到ECharts的api:containPixel、convertFromPixel在下面链接可以查看

ISQQW.COM x ECharts 文档(国内同步镜像) - API

TypeScript 复制代码
  //防止触发多次点击
  chart.getZr().off('click');
  //防止数据差距过大 柱状图数值太小点击不了柱体 getZr()可以点击到整个坐标轴
  chart.getZr().on('click', (params: any) => {
  const pointInPixel = [params.offsetX, params.offsetY];
  //'grid'表示整个直角坐标系网格区域(下图实例红框内容)
  //可以在option配置中grid:{show:true}显示
  //if语句判断给定的点是否在指定的坐标系或者系列上。
    if (chart.containPixel('grid', pointInPixel)) {
              // 获得点击的x,y坐标
             let position = chart.convertFromPixel({ seriesIndex: 0 }, [
                            params.offsetX,
                            params.offsetY,
                        ]);
                        // x轴数据的索引值
                        let xIndex = position[0];
                      
                       
  }
                });

此时整个坐标轴都可以点到,拿到xIndex就拿到了柱状图对应的索引值,此时就可以进行后续操作。

相关推荐
搬砖的小码农_Sky1 小时前
AI Agent:Windows上Node.js安装后 npm -v报错
前端·npm·node.js·人机交互
计算机魔术师1 小时前
半年翻倍!OpenAI再融300亿,估值冲到1.4万亿
前端
研☆香2 小时前
jQuery + Swiper.js 实现动态渲染轮播图
前端·javascript·jquery
子兮曰2 小时前
Node.js 50个优势场景盘点:一个人单干,为啥我多数时候只用它
前端·后端
IT_陈寒2 小时前
我花3小时debug,就因为JavaScript这个隐式转换坑
前端·人工智能·后端
excel3 小时前
Nuxt 中 useSeoMeta 与 useHead 的区别
前端
竹林8183 小时前
OmniGame 技术白皮书:从零依赖到 WebRTC P2P,重新定义网页小游戏的工程上限
前端·浏览器
ss2733 小时前
AI全栈实战 | 2.1-02 CSS 布局:垂直居中为什么是经典面试题?所有布局在解决什么矛盾
前端·css
律宏阔3 小时前
Flutter Riverpod 3:统一打印 Provider 错误与自动重试日志
前端·flutter
周洲08303 小时前
STM32片内Flash读写深度详解|掉电参数保存、底层原理
linux·前端·stm32