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就拿到了柱状图对应的索引值,此时就可以进行后续操作。

相关推荐
头茬韭菜几秒前
4.9 SSRF 防护 — Web 工具的出站安全与私有 IP 拦截
前端·tcp/ip·安全
Cobyte10 分钟前
模板 DSL 解析器中的状态机设计
前端·javascript·vue.js
颜酱12 分钟前
# 02 | 搭骨架:用 LangGraph 编排 12 步工作流(思路)
前端·人工智能·后端
颜酱13 分钟前
02 | 搭骨架:用 LangGraph 编排 12 步工作流
前端·人工智能·后端
刘卓航众创芯云服务部1 小时前
Kimi K3复杂任务实测:我把团队最头疼的三个场景全跑了一遍
前端
软件开发技术深度爱好者1 小时前
小学英语单词魔法学园HTML5实现
javascript·html5·英语学习
勉灬之1 小时前
Next.js + Prisma 跨平台部署踩坑记
开发语言·javascript·ecmascript
cll_8692418911 小时前
一个好看的Wordpress博客文字css样式
前端·css·ui
武子康2 小时前
Shippy:确定性工具、会话级 Sandbox 与 Live-Data Eval(4 类收敛 + 7 步实现方案 + 6 类评测指标)
前端·人工智能·后端
糖果店的幽灵2 小时前
langgraph分支之 - 动态分支(Dynamic Branch)
java·前端·javascript·人工智能·langgraph