echarts

   今天遇到两个问题:1、使用echarts绘制多条折线图时,一次只展示一条曲线,点击图例后显示选中类型的数据折线;2、多条折线图的y轴坐标顶部显示对应的数据单位。

解决办法:1、使用echarts中监听图例发生变化的事件(legendselectchanged),在echarts中图例的选中与否控制着其对应的数据折线是否显示,所以只要改变图例的选中状态即可。legend.selected代表着图例的选中状态,所以只要改变legend.selected(这是个对象)就可以达到目的了;  

代码如下

var myChartObj = echarts.init(document.getElementById('myChart'));
        var option = {
            title: {
                text: ''
            },
            tooltip: {
                trigger: 'axis'
            },
            legend: {
                data:['邮件营销','联盟广告','视频广告','直接访问','搜索引擎'],
                selected:{
                    '邮件营销':true,
                    '联盟广告':false,
                    '视频广告':false,
                    '直接访问':false,
                    '搜索引擎':false
                }
            },
            grid: {
                left: '3%',
                right: '4%',
                bottom: '3%',
                containLabel: true
            },
            xAxis: {
                type: 'category',
                boundaryGap: false,
                data: ['周一','周二','周三','周四','周五','周六','周日']
            },
            yAxis: {
                type: 'value'
            },
            series: [
                {
                    name:'邮件营销',
                    type:'line',
                    data:[120, 132, 101, 134, 90, 230, 210]
                },
                {
                    name:'联盟广告',
                    type:'line',
                    data:[220, 182, 191, 234, 290, 330, 310]
                },
                {
                    name:'视频广告',
                    type:'line',
                    data:[150, 232, 201, 154, 190, 330, 410]
                },
                {
                    name:'直接访问',
                    type:'line',
                    data:[320, 332, 301, 334, 390, 330, 320]
                },
                {
                    name:'搜索引擎',
                    type:'line',
                    data:[820, 932, 901, 934, 1290, 1330, 1320]
                }
            ]
        }; 
        myChartObj.setOption(option);
        myChartObj.on('legendselectchanged',function(params){
            console.log(params);
            var option = this.getOption();
            var curClickLegeng = params.name;//当前点击图例名称
            var allLegend = params.selected;
            var allLegendKeys = Object.keys(params.selected);
            if(params.selected[curClickLegeng]){//判断当前点击图例的选中状态
                for(var i = 0;i<allLegendKeys.length;i++){
                    if(curClickLegeng == allLegendKeys[i]){
                        allLegend[allLegendKeys[i]] = true;
                    }else{
                        allLegend[allLegendKeys[i]] = false;
                    }
                }
            }
            option.legend[0].selected = allLegend;
            myChartObj.setOption(option);

        })
 
2、y轴显示单位有两种方式:(1):坐标轴名称,(2):坐标轴刻度标签,这两者都是在yAxis属性中,前者是yAxis.name;后者是yAxis.axisLabel.formatter

 

 

 

 

 

 

 

 

posted @ 2019-11-19 16:20  翠瓜瓜  阅读(306)  评论(0编辑  收藏  举报