echarts重写图例点击事件 图例过滤并显示对应图例的折线

1 篇文章 0 订阅

图例过滤并显示对应图例的折线

问题:但是现在如果只点击在log、data中切换,没有问题。一旦切换到all,显示全部数据,在切换到log、data时,图例正确,折线一直是所有折线
问题如下图
在这里插入图片描述
解决方法:
在画布实例化之前,清空数据

myChart.clear();//清空ECharts
myChart.setOption(option);

可以自己测下有无myChart.clear();的区别

git 在线地址

重写图例点击事件

  • 点击一次,显示一条线;再次点击,显示所有
      function click({name: legend, selected}) {
        let isBegin = true;
        //判断是否是第一次点击
        //name = legend时, 当是true时,不是第一次
        //name!=legend, 有false,不是第一次
        for (let name in selected) {
            if (selected.hasOwnProperty(name)) {
                if (name === legend) {
                    if (selected[name] === true) {
                        isBegin = false;
                    }
                } else {
                    if (selected[name] === false) {
                        isBegin = false;
                    }
                }
            }
        }
        //是第一次的时候, name = legend时,选中;其他不选中
        //不是第一次,当selectd[legend] = true;说明他之前是false,不选中状态. 点击它是要选中它,所以name = legend时,选中;其他不选中;
        //............................= false;说明他之前是true,选中状态. 点击它是要选中全部,所以全部选中.
        if (isBegin) {
            for (let name in selected) {
                if (selected.hasOwnProperty(name)) {
                    if (name === legend) {
                        myChart.dispatchAction({type: 'legendSelect', name});
                    } else {
                        myChart.dispatchAction({type: 'legendUnSelect', name});
                    }
                }
            }
        } else {
            if (selected[legend]) {
                for (let name in selected) {
                    if (selected.hasOwnProperty(name)) {
                        if (name === legend) {
                            myChart.dispatchAction({type: 'legendSelect', legend});
                        } else {
                            myChart.dispatchAction({type: 'legendUnSelect', name});
                        }
                    }
                }
            } else {
                for (let name in selected) {
                    if (selected.hasOwnProperty(name)) {
                        myChart.dispatchAction({type: 'legendSelect', name});
                    }
                }
            }
        }
    }
    myChart.on("legendselectchanged", click);

在线测试修改地址
git地址

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值