首页 > 其他分享 >echart折线图点击事件包括任意位置

echart折线图点击事件包括任意位置

时间:2023-06-19 16:47:32浏览次数:42  
标签:myCharts 点击 params 事件 折线图 convertFromPixel echart

echart折线图点击事件包括任意位置

一、常规点击事件

在echarts中可以使用on 为图形添加点击事件,但是这种方式添加的点击事件,只有点击在图形元素上才会触发事件处理函数。

myChart.on('click',params=>{ 
// 可以设置点击的类型与响应的系列
if (params.seriesType === 'line') {
	if (params.seriesIndex === 1) {
	}
}

需要注意的是,如果是动态改变的每一次setOptions之后都添加事件会造成事件重复响应,所以可以先删掉事件再添加。

myChart.off('click')

缺点:

​ 在折线图与柱状图中都具有很多不可触发的区域,特别是折线图中,只有点击在拐点上才会触发。在数据差别很大的图形中,想准确点击数据较小甚至为0的图形是非常困难的,这就使得一些交互体验不是很好。

二、响应图形任意位置的点击事件

这种方法借助于convertFromPixel和zr来实现需要的效果,实现方法如下:

myChart.getZr().on('click',params=>{
    const pointInPixel= [params.offsetX, params.offsetY];
    if (myCharts.containPixel('grid',pointInPixel)) {
        let xIndex=myCharts.convertFromPixel({seriesIndex:0},[params.offsetX, params.offsetY])[0];
	}
});

实现的代码解释如下:

myCharts.getZr().on('click',params=>{})

使用getZr添加图表的整个canvas区域的点击事件,并获取params携带的信息

const pointInPixel= [params.offsetX, params.offsetY];

获取到鼠标点击位置

if (myCharts.containPixel('grid',pointInPixel)) {}

使用containPixel API判断点击位置是否在显示图形区域,下面的例子过滤了绘制图形的网格外的点击事件,比如X、Y轴lable、空白位置等的点击事件。

let xIndex=myCharts.convertFromPixel({seriesIndex:0},[params.offsetX, params.offsetY])[0];

使用API convertFromPixel获取点击位置对应的x轴数据的索引值,

上一步骤中可以获取到丰富的诸如轴线、索引、ID等信息,可以在自己的事件处理代码中方便的使用。

这种方法仅响应图表区域的响应事件,通过convertFromPixel获取到可能需要的一些信息,可以很好的实现需求,并且不会有其它的性能影响,完美实现了如题的需求。

标签:myCharts,点击,params,事件,折线图,convertFromPixel,echart
From: https://www.cnblogs.com/Cxymds/p/17491486.html

相关文章

  • Flutter 绘制探索 | 扇形区域与点击校验
    作者:张风捷特烈0.前言今天来探索一个问题,如何绘制一块扇形区域路径,并且校验触点是否落在扇形区域之中。这个问题对于绘制饼图及处理手势事件校验非常重要。1.扇形区域的定义首先来明确一下扇形区域的表示,如下图所示,一个扇形区域通过五个属性进行描述:属性名类型作用centerO......
  • 点击echarts图。获取点击事件
         自动跳转复用代码:letdataIndex=param.dataIndexthis.$nextTick(()=>{this.$refs.multipleTable0.bodyWrapper.scrollTop=(this.$refs.multipleTable0.bodyWrapper.scrollHeight*(this.tableList.len......
  • 使用Echarts时报 Implementation of registerMap doesn't exists 错误解决办法
    最新的echarts在使用时,如果使用按需加载的方式引入依赖。在使用registerMap函数时会报错如果出现这两个错误:ImplementationofregisterMapdoesn'texists.或者Mapxxxnotexists.TheGeoJSONofthemapmustbeprovided.那么大概率是因为echarts升级后导致的不兼......
  • vue实现点击按钮一键复制功能
    点击复制按钮后,将内容一键复制下来,不用去选中复制第一种直接使用js方式:<divclass="mask-cont"><p><inputid="input"/></p><buttonclass="btns"@click="copyToClip">复制</button></div>copyToClip()......
  • ubutu18.04操作归档管理器时鼠标变手型无法点击
    ubuntu18.04用系统自带的归档管理器打开压缩包文件,拖动文件时变成鼠标变成手形后,界面不能再点击任何东西。分析:可能是个GUI窗体BUG,正常应该是子窗口再父窗口上,结果BUG导致,子窗口被父窗口覆盖,所以不能操作。解决方法:用键盘Alt+tab组合键跳到归档管理器,再......
  • echarts柱状图不同颜色设置
    可以通过设置每人柱子的颜色来实现echarts在状图每人柱颜色不一样的效果。具体方法是在series中设置itemtyle属性,然后在itemStvle中设置color属性,将每个柱子的颜色设置为不同的值即可。series:[{type:'bar'data:[10,20].itemStyle:(color:function(par......
  • 安装的sourcetree打不开,点击以后就弹了下标标就没反应了
    到这个路径下C:\Users\sxws8\AppData\Local\Atlassiansxws8:这个根据你自己的路径来把这个删了就可以打开了。 ......
  • 使用 JFreeChart来创建基于web的图表
    级别:初级刘冬 软件工程师,珠海市创我科技发展有限公司2003年9月08日WWW的发展使得基于因特网的应用程序不再局限于静态或者简单的动态内容提供。传统的一些以软件包形式发布应用程序例如报表系统等都在逐渐搬到因特网上。但是这两者之间有着天壤之别,虽然对于数据获取......
  • Echarts
    Echarts国内同步镜像网站:https://www.isqqw.com/echarts-doc/zh/tutorial.html一、引用main.js 创建全局变量import*asechartsfrom'echarts'Vue.prototype.$echarts=echarts二、使用 ......
  • echarts飞行航线图学习
    第一次接触这个理解可能不一定正确后面如果我发现有问题会更正1.npm安装echarts npminstallecharts--saveimport*asechartsfrom'echarts'//这里我在data里定义了一个也可不定义根据使用方法灵活调整this.myChart=echarts.init(this.$refs......