echarts 区域缩放dataZoom自动滚动带提示框(tooltip)

一、技术需求

移动端柱状图展示,数据太大要求显示六条,自动向前移动,带提示框
在这里插入图片描述

二、解决办法

监听dataZoom,获取X轴的开始位置和结束位置,每次起始位置和结束位置加1,每隔两秒刷新一次。

var scroll  = setInterval(() => {
    let startValue = myChart.getModel().option.dataZoom[0].startValue;
    let endValue = myChart.getModel().option.dataZoom[0].endValue;
    let start = myChart.getModel().option.xAxis[0].data[startValue];//起始X轴
    let end = myChart.getModel().option.xAxis[0].data[endValue];//结束X轴
    /*bardata.title.length 为x轴数据长度 */
     if (option.dataZoom[0].endValue == bardata.title.length) {
        option.dataZoom[0].endValue = 6
        option.dataZoom[0].startValue = 0
    } else {
        option.dataZoom[0].endValue = option.dataZoom[0].endValue + 1
        option.dataZoom[0].startValue = option.dataZoom[0].startValue + 1
    }
    console.log('start',startValue);
    /*提示框跟随*/
        myChart.dispatchAction({
        type: 'showTip',
        seriesIndex: 0,
        dataIndex: startValue +1,
        });
    myChart.setOption(option) }, 2000)
    /* 用户拖动滚动条或者点击事件,暂停自动滚动不再触发 */
    myChart.on('datazoom', function (params){
         clearInterval(scroll);
    })
    myChart.on('click', function (params) {
        clearInterval(scroll);
        /*提示框获取显示索引*/
        myChart.dispatchAction({
            type: 'showTip',
            seriesIndex:0,
            dataIndex: params.dataIndex,
        });
    });
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在echarts中设置柱状图自动滚动,你需要使用echarts提供的数据区域缩放功能和定时器。 首先,你需要启用数据区域缩放功能。这可以通过在x轴上设置`dataZoom`选项来完成。例如: ```javascript option = { xAxis: { type: 'category', data: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, yAxis: { type: 'value' }, dataZoom: [ { type: 'inside', start: 0, end: 100 } ], series: [{ data: [820, 932, 901, 934, 1290, 1330, 1320, 1400, 1200, 1380, 1340, 1050], type: 'bar' }] }; ``` 在上面的代码中,我们将`dataZoom`选项设置为一个包含一个内部区域缩放的数组。这将使用户能够通过缩放x轴来缩放数据。你可以根据需要调整`start`和`end`选项的值。 接下来,你需要设置一个定时器,以便在一定时间间隔内自动滚动图表。例如,以下代码将每3秒滚动一次图表: ```javascript setInterval(function () { myChart.dispatchAction({ type: 'dataZoom', startValue: currentMonth, endValue: currentMonth + 5 }); currentMonth++; if (currentMonth > 6) { currentMonth = 0; } }, 3000); ``` 在上面的代码中,我们使用`setInterval`函数创建一个定时器,每3秒自动滚动一次图表。每次滚动时,我们使用`dispatchAction`方法将`dataZoom`操作发送到图表中。我们使用`startValue`和`endValue`选项指定缩放区域的起始值和结束值。在每个时间间隔内,我们将`currentMonth`变量增加5,并检查它是否超过了数据的最大值。如果超过了,我们将其重置为0。 你可以根据需要调整时间间隔和缩放区域的大小和位置来适应你的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值