首页 前端知识 echarts——tooltips动态循环展示 柱状图动态循环展示

echarts——tooltips动态循环展示 柱状图动态循环展示

2024-02-08 15:02:33 前端知识 前端哥 9 494 我要收藏

echarts——tooltips动态循环展示+柱状图动态循环展示

最近在做看板,用的是echarts做的。遇到一些内容,做个笔记记录一下。

1.tooltips动态循环展示——数据不动,toolTip索引改变

在这里插入图片描述

上代码:

1.1 options中需要有tooltip
tooltip: {
    trigger: "axis",
    axisPointer: {
        // 坐标轴指示器,坐标轴触发有效
        type: "shadow" // 默认为直线,可选为:'line' | 'shadow'
    }
},

由于此部分数据不动,只需要循环改变toolTip的索引即可实现动态循环展示了

1.2 写个方法,定时改变dataIndex值,就是当前展示tooltip的索引
var currentIndex = -1;
setInterval(() => {
    var dataLen = data.length;
    echartsId.dispatchAction({
        type: 'downplay',
        seriesIndex: 0,
        dataIndex: currentIndex
    });
    currentIndex = (currentIndex + 1) % dataLen;
    echartsId.dispatchAction({
        type: 'highlight',
        seriesIndex: 0,
        dataIndex: currentIndex,
    });
    echartsId.dispatchAction({
        type: 'showTip',
        seriesIndex: 0,
        dataIndex: currentIndex
    });
    // console.log(currentIndex)
}, 3000)

2.数据动态改变——toolTip跟随改变

在这里插入图片描述

下面代码中:

1. source2 是数据源,有多条,要求每次都动态展示其中的6条。
2. 思路:先数组末尾添加第一条,然后splice去掉第一条,然后截取前6条数据。
3. 定时器循环,为了保证源数据不被污染,可以通过扩展运算符进行赋值数据。
4. column2:是echarts.init('dom'元素);之后的内容,只要是做过echarts的都明白的。
5. column2Draw:是options配置参数。这个基本上可以参考官网上的配置。
6. 一定要用setTimeout延时一下,不用写延时时间,否则会有部分数据不展示toolTip,有些展示。加个延时就解决了
 var column2 = echarts.init(document.getElementById("target-bar1-right"));
 column2.setOption(column2Draw);
let barTimer = setInterval(() => {
   source2.push(source2[0]);
    source2.splice(0, 1)
    let data = [...source2];
    var newarr1 = data.splice(0, 6);
    column2Draw.dataset.source = newarr1;
    column2.setOption(column2Draw);
    showTooltips(column2,newarr1);
}, 3000)

function showTooltips(echartsID,data){
    setTimeout(function () {
        var currentIndex = data.length-1;//由于要求数据逆序,所以第一个也就是数据的最后一个了,如果数据没有要求逆序展示,则此处可以将currentIndex直接写为0,
        echartsID.dispatchAction({
            type: 'showTip',
            seriesIndex: 0,
            dataIndex: currentIndex
        });
    })
}

由于此部分数据一直都在改变,所以toolTip的索引固定即可

一定要用setTimeout延时一下,不用写延时时间,否则会有部分数据不展示toolTip,有些展示。加个延时就解决了

下面附录:options的参数

 var column2Draw = {
    tooltip: {
        trigger: 'axis',
        backgroundColor:'rgba(0,0,0,0.8)',
        axisPointer: {
            type: 'cross'
        },
        formatter: function (params) {
            var relVal = '';
            for (var i = 0, l = params.length; i < l; i++) {
                relVal += '<span style="font-size:18px; color:#fff;">'+params[i].value[2]+'</span>'+'<br/><span style=\"display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:#98FB98\"></span> 数量:'+params[i].value[1];
            }
            return relVal
        }
    },
    dataset: {
        source: source2data
    },
    yAxis: [
        {
            type: 'category',
            axisLine: { //y轴
                show: false
            },
            axisLabel: {
                textStyle: { //改变刻度字体样式
                    color: '#fff',
                    fontSize: 14
                }
            },
            "axisTick": { //y轴刻度线
                "show": false
            },
            //网格样式
            splitLine: {
                show: false,
                lineStyle: {
                    color: '#333',
                    width: 1,
                    type: 'solid'
                }
            }
        },
    ],
    series: [
        {
            type: 'bar',
            silent: true,
            barWidth: 30,
            itemStyle: { //上方显示数值
                normal: {
                    color: new echarts.graphic.LinearGradient(1, 0, 0, 0, [{
                        offset: 0,
                        color: "#07E07D"
                    }, // 0% 处的颜色
                        {
                            offset: 0.4,
                            color: "#28AA6E"
                        }, // 100% 处的颜色
                        {
                            offset: 1,
                            color: "#000"
                        } // 100% 处的颜色
                    ]),
                    label: {
                        show: true, //开启显示
                        position: 'right', //在上方显示
                        textStyle: { //数值样式
                            color: '#fff',
                            fontSize: 16
                        },
                        formatter: function (val) {
                            // console.log(val);
                            // ${val.value[0]}:
                            let html = `
                                 ${val.value[1]}
                                `;
                            return html;
                        },
                        lineHeight: 10,
                        padding: [5,10,0,-200],
                        borderRadius: 6,
                        backgroundColor: '#002262',
                    }
                },
            },
        },
    ],
}

多多积累,多多收获!!!

转载请注明出处或者链接地址:https://www.qianduange.cn//article/1550.html
标签
评论
会员中心 联系我 留言建议 回顶部
复制成功!