echarts横向柱状图的滚动以及数据过小引出的扩大点击范围处理方法

横向的柱状图: 

dataZoom:

        [

          {

            id: 'dataZoomY',

            yAxisIndex: [0],

            left: '98%', // 滚动条位置

            show: false, // 是否显示滑动条,不影响使用

            type: 'slider', // 这个 dataZoom 组件是 slider 型 dataZoom 组件

            startValue: 0, // 从头开始。

            endValue: 9, // 一次性展示10个            

            width: 10,           

            fillerColor: '#E8EAEF',

            zoomLock: true,

            showDataShadow: false, // 是否显示数据阴影 默认auto

            backgroundColor: '#fff',

            showDetail: false, // 即拖拽时候是否显示详细数值信息 默认true

            realtime: true, // 是否实时更新

            filterMode: 'empty',

            handleIcon: 'circle',

            // handleSize: '80%',

            moveHandleSize: 0,

            // maxValueSpan: 2,

            // minValueSpan: 2,

            brushSelect: false, // 刷选功能,设为false可以防止拖动条长度改变 ************(这是一个坑)

          },

          {

            type: 'inside',

            yAxisIndex: [0],

            zoomOnMouseWheel: false, // 滚轮是否触发缩放

            moveOnMouseMove: true, // 鼠标滚轮触发滚动

            moveOnMouseWheel: true,

          }

        ],

利用echarts提供的新API convertFromPixel解决柱状图数据差距大,小数据几乎没有显示条可以点击。

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

this.echart.getZr().on('click',params=>{
    const pointInPixel= [params.offsetX, params.offsetY];
    if (this.echart.containPixel('grid',pointInPixel)) {
        let xIndex=this.echart.convertFromPixel({seriesIndex:0},[params.offsetX, params.offsetY])[0];
        /*事件处理代码书写位置*/}
});

实现的代码解释如下:

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

获取到鼠标点击位置:

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

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

使用API convertFromPixel获取点击位置对应的x轴数据的索引值,我的实现是借助于索引值的,当然可以获取到其它的信息,详细请查看文档。
                        
摘录自码友,原文链接:https://blog.csdn.net/smk108/article/details/78482154

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值