分享

echarts 怎么点击图例显示该折线,隐藏其他折线

 化茧成蝶时光机 2021-02-02

highcharts类似功能:https:///rencht/hhhhLv/share

echarts实现: 官网 https://echarts./zh/index.html

参考链接:

https://segmentfault.com/q/1010000014133645?sort=created

https://blog.csdn.net/u014458962/article/details/105855267

https://www.cnblogs.com/shj-com/p/11327072.html

代码:line-stack.html  (注:黑色为官方源代码  红色为新增内容)

<!DOCTYPE html>
<html style="height: 100%">
   <head>
       <meta charset="utf-8">
   </head>
   <body style="height: 100%; margin: 0">
       <div id="container" style="height: 100%"></div>
       <script type="text/javascript" src="https://cdn./npm/echarts@4/dist/echarts.min.js"></script>
       <script type="text/javascript" src="https://cdn./npm/echarts-gl@1/dist/echarts-gl.min.js"></script>
       <script type="text/javascript" src="https://cdn./npm/echarts-stat@1/dist/ecStat.min.js"></script>
       <script type="text/javascript" src="https://cdn./npm/echarts@4/dist/extension/dataTool.min.js"></script>
       <script type="text/javascript" src="https://cdn./npm/echarts@4/map/js/china.js"></script>
       <script type="text/javascript" src="https://cdn./npm/echarts@4/map/js/world.js"></script>
       <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=xfhhaTThl11qYVrqLZii6w8qE5ggnhrY&__ec_v__=20190126"></script>
       <script type="text/javascript" src="https://cdn./npm/echarts@4/dist/extension/bmap.min.js"></script>
       <script type="text/javascript">
var dom = document.getElementById("container");
var myChart = echarts.init(dom);
var app = {};
option = null;
option = {
    title: {
        text: '折线图堆叠'
    },
    tooltip: {
        trigger: 'axis'
    },
    legend: {
        data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎']
    },
    grid: {
        left: '3%',
        right: '4%',
        bottom: '3%',
        containLabel: true
    },
    toolbox: {
        feature: {
            saveAsImage: {}
        }
    },
    xAxis: {
        type: 'category',
        boundaryGap: false,
        data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
    },
    yAxis: {
        type: 'value'
    },
    series: [
        {
            name: '邮件营销',
            type: 'line',
            stack: '总量',
            data: [120, 132, 101, 134, 90, 230, 210]
        },
        {
            name: '联盟广告',
            type: 'line',
            stack: '总量',
            data: [220, 182, 191, 234, 290, 330, 310]
        },
        {
            name: '视频广告',
            type: 'line',
            stack: '总量',
            data: [150, 232, 201, 154, 190, 330, 410]
        },
        {
            name: '直接访问',
            type: 'line',
            stack: '总量',
            data: [320, 332, 301, 334, 390, 330, 320]
        },
        {
            name: '搜索引擎',
            type: 'line',
            stack: '总量',
            data: [820, 932, 901, 934, 1290, 1330, 1320]
        }
    ]
};
var triggerAction = function(action, selected) {
    legend = [];
    for ( name in selected) {
        if (selected.hasOwnProperty(name)) {
            legend.push({name: name});
        }
    }
    myChart.dispatchAction({
        type: action,
        batch: legend
    });
};
var isFirstUnSelect = function(name,selected) {
    var unSelectedCount = 0;
    for ( item in selected) {
        if (!selected.hasOwnProperty(item)) {
            continue;
        }

        if (selected[item] == false) {
            ++unSelectedCount;
        }
    }
    return unSelectedCount==1 && selected[name] == false;
};
var isAllUnSelected = function(selected) {
    var selectedCount = 0;
    for ( item in selected) {
        if (!selected.hasOwnProperty(item)) {
            continue;
        }
        // 所有 selected Object 里面 true 代表 selected, false 代表 unselected
        if (selected[item] == true) {
            ++selectedCount;
        }
    }
    return selectedCount==0;
};

if (option && typeof option === "object") {
    myChart.on('legendselectchanged', function (params) {
        // console.log(params);
        var selected = params.selected;
        var name = params.name; // current clicked one
 
        if (selected != undefined) {
            // myChart.dispatchAction({
            //     type: 'legendInverseSelect'
            // })
            if (isFirstUnSelect(name,selected)) {
                triggerAction('legendToggleSelect', selected);
            } else if (isAllUnSelected(selected)) {
                triggerAction('legendSelect', selected);
            }
        }
    });

    myChart.setOption(option, true);
}
       </script>
   </body>
</html>

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约