Echarts自定义折线图例,增加选中功能

用Echarts图表开发,原本的Echarts图例不一定能满足我们的视觉要求。

下面是Echarts 折线图自定义图例,图例checked选中,相应的折线线条会随之checked,其余未选中的图例对应的折线opacity会降低,(柱状图,饼图等等也类似于此),这是一个小例子(如果满足不了您的视觉要求,您可以自己定义css样式,达到自己想要的视觉效果):

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Echarts 自定义折线图例</title>
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.bootcss.com/echarts/3.7.1/echarts.min.js"></script>
<style>
    ul,li{ list-style:none;}
    .charts-left-list {
        list-style: none;
        overflow: hidden;
        float: left;
        width: 100%;
        padding: 0;
    }
    .charts-left-list li {
        float: left;
        width: 100%;
        color: #4A4A4A;
        font-size: 13px;
        line-height: 30px;
        border-bottom: 1px solid #EEEEEE;
    }
    .pull-left {
        float: left !important;
    }
    span.pull-right {
        padding: 0 6px;
        float: right !important;
    }
    li.state-selected {
        background-color: rgba(240, 225, 28, 0.3);
    }

    span.item-color{
        float:left;
        width:10px;
        height:10px;
        border-radius:50%;
        margin-top: 9px;
        margin-right: 6px;
    }
    .tooltip-all{
        max-width:180px;
        padding:10px 16px;
    }
    .custom-tooltip{
        float: left;
        width:100%;
    }
    .tooltip-date{
        float: left;
        width:100%;
        padding-bottom: 10px;
        border-bottom: 1px solid #EEEEEE;
    }
    .tooltip-detail{
        float: left;
        padding:10px 0;
    }
    .item-name{
        float:left;
    }
    .item-num{
        float:right;
    }

</style>
</head>

<body>

<div class="charts-left-list" style="width:30%; float:left">
    <ul>
        <li>
            <span class="pull-left">
                <span class="num">1</span>
                <span class="list-color"></span>
                <span class="list-name">安凱客車</span>
            </span>
            <span class="pull-right">8.50</span>
        </li>
        <li>
            <span class="pull-left">
                <span class="num">2</span>
                <span class="list-color"></span>
                <span class="list-name">奧馳</span>
            </span>
            <span class="pull-right">8.20</span>
        </li>
        <li>
            <span class="pull-left">
                <span class="num">3</span>
                <span class="list-color"></span>
                <span class="list-name">奧迪</span>
            </span>
            <span class="pull-right">8.02</span>
        </li>
        <li>
            <span class="pull-left">
                <span class="num">4</span>
                <span class="list-color"></span>
                <span class="list-name">阿斯頓馬丁</span>
            </span>
            <span class="pull-right">7.87</span>
        </li>
        <li>
            <span class="pull-left">
                <span class="num">5</span>
                <span class="list-color"></span>
                <span class="list-name">寶駿</span>
            </span>
            <span class="pull-right">7.50</span>
        </li>
        <li>
            <span class="pull-left">
                <span class="num">6</span>
                <span class="list-color"></span>
                <span class="list-name">寶馬</span>
            </span>
            <span class="pull-right">6.12</span>
        </li>
        <li>
            <span class="pull-left">
                <span class="num">7</span>
                <span class="list-color"></span>
                <span class="list-name">保時捷</span>
            </span>
            <span class="pull-right">5.78</span>
        </li>
        <li>
            <span class="pull-left">
                <span class="num">8</span>
                <span class="list-color"></span>
                <span class="list-name">寶沃</span>
            </span>
            <span class="pull-right">5.11</span>
        </li>
        <li>
            <span class="pull-left">
                <span class="num">9</span>
                <span class="list-color"></span>
                <span class="list-name">北奔</span>
            </span>
            <span class="pull-right">4.67</span>
        </li>
        <li>
            <span class="pull-left">
                <span class="num">10</span>
                <span class="list-color"></span>
                <span class="list-name">奔馳</span>
            </span>
            <span class="pull-right">4.18</span>
        </li>
    </ul>
</div>

<div id="chartmain" style="width:70%; height: 400px; float:right;"></div>

<script>
    //ECharts
    var colors = [‘#F8E71C‘, ‘#7ED321‘, ‘#009688‘, ‘#FF9800‘, ‘#E91E63‘, ‘#50E3C2‘, ‘#CDDC39‘, ‘#03A9F4‘, ‘#9C27B0‘, ‘#2813FA‘];
    option = {
        color: colors,
        title : {
            subtext: ‘营销指数‘
        },
        animation: false,
        tooltip : {
            trigger: ‘axis‘,
            formatter: function(params) {
                //console.log(params);
                var result = ‘‘;
                    result += ‘<div class="tooltip-all"><span class="tooltip-date">‘+params[0].name+‘</span><div class="tooltip-detail">‘;
                params.forEach(function (item) {
                    result += ‘<div class="custom-tooltip"><span class="item-color" style="background-color:‘ + item.color + ‘"></span><span class="item-name">‘+item.seriesName+‘</span><span class="item-num">‘+item.value+‘</span></div>‘;
                });
                result += ‘</div></div>‘;
                return result;
            }
        },
        legend : {
            show: false,
            data: [
            ‘安凱客車‘,‘奧馳‘, ‘奧迪‘,‘阿斯頓馬丁‘, ‘寶駿‘,‘寶馬‘, ‘保時捷‘,‘寶沃‘, ‘北奔‘,‘奔馳‘
            ]
        },
        grid : {
            top : 40,
            bottom: 70,
            right: 80,
            left: 34,
        },
        dataZoom : {
            show : true,
            realtime : true,
            showDetail: true,
            y: 380,
            height: 20,
            backgroundColor: ‘rgba(255,255,255,0.5)‘,
            dataBackgroundColor: ‘#EEEEEE‘,
            fillerColor: ‘rgba(252,249,215,0.5)‘,
            handleColor: ‘rgba(240,225,28,0.8)‘,
            handleSize: ‘22‘,
            start : 25,
            end : 70
        },
        calculable : true,
        xAxis : [
            {
                type : ‘category‘,
                boundaryGap : false,
               data : [‘2016/9/08‘,‘2016/10/08‘,‘2016/11/08‘,‘2016/12/08‘,‘2017/01/08‘,‘2017/02/08‘,‘2017/03/08‘,‘2017/04/08‘,‘2017/05/08‘,‘2017/06/08‘,‘2017/07/08‘,‘2017/08/08‘,‘2017/09/08‘,‘2017/10/08‘,‘2017/11/08‘,‘2017/12/08‘],
               axisLine:{
                    lineStyle:{
                        color: ‘#EEEEEE‘,
                        width: 1,
                    }
                },
                axisLabel : {
                    textStyle: {
                        color: ‘#C8C6C6‘,
                        fontSize: 10
                    }
                }
            }
        ],
        yAxis : [
            {
                type : ‘value‘,
                axisLabel : {
                    formatter: ‘{value}‘,
                    textStyle: {
                        color: ‘#C8C6C6‘,
                        fontSize: 13
                    }
                },
                axisLine:{
                    lineStyle:{
                        color: ‘#EEEEEE‘,
                        width: 1,
                    }
                },
                splitLine: {
                    lineStyle: {
                        color: [‘#EEEEEE‘]
                    }
                }

            }
        ],
        series : [
            {
                name:‘安凱客車‘,
                smooth: true,
                type:‘line‘,
                symbol:‘none‘,
                data:[6.3, 7.5, 7.9, 8.2, 8.4, 8.8, 9,6.3,7.5, 7.9, 8.5, 8, 7.6, 7, 6,9],
                lineStyle:{
                    normal:{
                        opacity: 1
                    }
                }
            },
            {
                name:‘奧馳‘,
                smooth: true,
                type:‘line‘,
                symbol:‘none‘,
                data:[5.5, 6.5, 6.2, 7, 7.5, 8, 8.3,6,7, 5.5, 8.2, 6, 7, 6, 4,6],
                lineStyle:{
                    normal:{
                        opacity: 1
                    }
                }
            },
            {
                name:‘奧迪‘,
                smooth: true,
                type:‘line‘,
                symbol:‘none‘,
                data:[5.7, 6.2, 5, 4.3, 3, 5.2, 4,7,6.1, 5.3, 4, 6.2, 4.5, 6.8, 5.4,8.6],
                lineStyle:{
                    normal:{
                        opacity: 1
                    }
                }
            },
            {
                name:‘阿斯頓馬丁‘,
                smooth: true,
                type:‘line‘,
                symbol:‘none‘,
                data:[4.8, 6, 5.6, 5.2, 4.8, 5.4, 3.9,5.7,3.6, 2.8, 4.2, 3.6, 2.9, 4.3, 3.4,5.8],
                lineStyle:{
                    normal:{
                        opacity: 1
                    }
                }
            },
            {
                name:‘寶駿‘,
                smooth: true,
                type:‘line‘,
                symbol:‘none‘,
                data:[4.2, 5.4, 5.2, 4.6, 4, 5, 3.5,5.2,3.1, 4, 6, 3.1, 4, 2.5, 3,5],
                lineStyle:{
                    normal:{
                        opacity: 1
                    }
                }
            },
            {
                name:‘寶馬‘,
                smooth: true,
                type:‘line‘,
                symbol:‘none‘,
                data:[3.8, 4.6, 4.9, 4, 5, 3, 4.5,3,3.8, 4.6, 2.5, 2.4, 3.6, 3.1, 2.6,4.5],
                lineStyle:{
                    normal:{
                        opacity: 1
                    }
                }
            },
            {
                name:‘保時捷‘,
                smooth: true,
                type:‘line‘,
                symbol:‘none‘,
                data:[3.2, 4.1, 4.6, 5, 3.6, 2.4, 3.4,2,3, 5.6, 2, 3, 4, 2.1, 2.3,3.5],
                lineStyle:{
                    normal:{
                        opacity: 1
                    }
                }
            },
            {
                name:‘寶沃‘,
                smooth: true,
                type:‘line‘,
                symbol:‘none‘,
                data:[2.6, 3.4, 4, 4.2, 3.2, 2, 3,2.5,5, 4.2, 1.8, 3.6, 3.4, 1.8, 1.9,2.9],
                lineStyle:{
                    normal:{
                        opacity: 1
                    }
                }
            },
            {
                name:‘北奔‘,
                smooth: true,
                type:‘line‘,
                symbol:‘none‘,
                data:[2.1, 3, 3.5, 3.8, 2.8, 1.5, 2.4,2.9,4.1, 3.1, 1.2, 4, 3, 1.2, 1.6,2.4],
                lineStyle:{
                    normal:{
                        opacity: 1
                    }
                }
            },
            {
                name:‘奔馳‘,
                smooth: true,
                type:‘line‘,
                symbol:‘none‘,
                data:[1.5, 2.5, 3, 3.2, 2, 1, 3.6,2.1,4.5, 2.5, 0.8, 3.4, 2.5, 0.6, 1.8,2.1],
                lineStyle:{
                    normal:{
                        opacity: 1
                    }
                }
            }
        ]
    };

    //初始化echarts实例
    var myChart = echarts.init(document.getElementById(‘chartmain‘));

    $(‘.charts-left-list li‘).bind(‘click‘,function(){
        var index = $(this).index();
        if($(this).hasClass(‘state-selected‘)){
            $(this).removeClass(‘state-selected‘);
        }else{
            $(this).addClass(‘state-selected‘).attr(‘value‘,index);
        }

        for(var i=0; i<option.series.length; i++){
            option.series[i].lineStyle.normal.opacity = 0.1;
        }

        if ($(‘.state-selected‘).length==0){
            $(‘.charts-left-list li‘).each(function(){
                var all_val = $(this).index();
                option.series[all_val].lineStyle.normal.opacity = 1;
            });
        }else{
            $(‘.charts-left-list li.state-selected‘).each(function(){
                var the_val = $(this).attr(‘value‘);
                option.series[the_val].lineStyle.normal.opacity = 1;
            });
        }

        myChart.setOption(option);    

    });

    //使用制定的配置项和数据显示图表
    myChart.setOption(option);

    window.onresize = function () {
        myChart.resize();
    };

</script>
</body>
</html>

原文地址:https://www.cnblogs.com/a-cat/p/8494510.html

时间: 2024-10-28 11:33:09

Echarts自定义折线图例,增加选中功能的相关文章

ECharts自定义toolbox中增加自定义按钮

今天想能不能在ECharts中的ToolBox增加自己的按钮,然后读了一下ToolBox代码,自己试了试,验证是可以的. 1.效果图 图片中红色框起来的按钮 2.代码 selfButtons:{//自定义按钮 danielinbiti,这里增加,selfbuttons可以随便取名字 show:true,//是否显示 title:'自定义', //鼠标移动上去显示的文字 icon:'test.png', //图标 option:{}, onclick:function(option1) {//点击

echarts自定义折线图横坐标时间间隔踩坑总结

折线图需求:横坐标为时间,要求按一定间隔展示,鼠标移至折线上间隔时间内的数据也可展示 其实很简单的一个配置就可搞定,但在不熟悉echarts配置的情况下,就很懵逼 xAxis: { boundaryGap: false, // 距离坐标原点是否有间隙 axisLabel: { //  如果这个字段不设置,echarts会根据屏宽及横坐标数据自动给出间隔 interval: 30, // 间隔长度,可自定义(如果是时间格式,echarts会自动处理) rotate: 40 // 横坐标上label

Eclipse rcp 开发 : 自定义导航视图CNF(3)为导航视图增加隐藏文件功能

org.eclipse.ui.navigator.navigatorContent 右键新增commonFilter id:  唯一 name :名称 如:*.xml resources description:描述, 如:Hides *.xml resources 在该属性下载增加属性:其中的value为通配xml  <filterExpression>             <and>                <adapt                     

自定义listView添加滑动删除功能

今天研究了一下android里面的手势,结合昨天学习的自定义View,做了一个自定义的listview,继承自listView,添加了条目的滑动手势操作,滑动后出现一个删除按钮,点击删除按钮,触发一个删除的事件,在事件中进行删除当选行的元素,刷新listview. 一共分为以下几步进行: 1.新建一个按钮的布局文件,用来作为动态添加的按钮:layout_button.xml <?xml version="1.0" encoding="utf-8"?> &

为ecshop红包增加”转赠”功能

ecshop促销中使用红包激励用户购物,要想炒热活动,红包就需要有物以稀为贵的感觉.有人求有人送,这样红包之间的转赠有助于拉动第二梯队的顾客.但是如果已经把红包添加到自己的账户了怎么办?如果ecshop红包的使用再加上什么限制(比如,一个单只能用一个红包,就够坑爹的),现在来做一个线上转赠红包的功能. 最模板简单的实现一下: 首先了解,红包存放在ecs_user_bonus表中,他的归属区分很简单:通过user_id来决定红包属于谁的. 此功能涉及到四个文件:/js/user.js .  /us

如何Windows分页控件中增加统计功能

在我的博客里面,很多Winform程序里面都用到了分页处理,这样可以不管是在直接访问数据库的场景还是使用网络方式访问WCF服务获取数据,都能获得较好的效率,因此WInform程序里面的分页控件的使用是很好的一个解决方式,它能够快速获取数据,并将可能减少我们增加太多的代码逻辑,实现简单.高效.统一的理念.本篇主要介绍如何在分页的GridControl里面如何实现数据的统计功能. 一般情况下,分页控件呈现分为两种方式,一种需要有分页码的真正分页处理,一种是不需要分页处理,但是列表和功能基本保持一致的

python 之装饰器(用装饰器给现有函数增加新功能)

#!/usr/bin/env python # -*- coding: utf-8 -*- """ Created on Mon Nov 14 01:01:29 2016 @author: toby """ #知识点:装饰器 ''' #一.小粒子: #要求1.假如产品经历要求在每个函数之上执行之前都添加一个验证的功能,当然这里只是模拟而已,别当真哈! #已写好的现有函数如下,有1000个函数 def func1():     print 'fun

自动升级系统的设计与实现(续2) -- 增加断点续传功能 (附最新源码)

一.缘起 之前已经写了两篇关于自动升级系统OAUS的设计与实现的文章(第一篇.第二篇),在为OAUS服务端增加自动检测文件变更的功能(这样每次部署版本升级时,可以节省很多时间,而且可以避免手动修改带来的错误)后,有部分使用者又提出了一个很好的建议:为OAUS增加断点续传功能.因为如果网络状态不是很好,就经常会在升级到一半的时候,由于OAUS客户端掉线而导致升级失败,这个时候,就必须重新开始整个升级过程.即使升级中断的时候,已经完成了99%,也必须重头再来.所以,为OAUS增加断点续传功能是非常必

JS为Select下拉框增加输入功能

JavaScript使用parentNode.nextSibling.value实现的本功能,实际上你会发现网页上有两个控件元素,一个是Select,一个是input,使用CSS将input覆盖于select之上,再使用JS将下拉框的值赋值给input,实际上是用input模拟出了select的功能,思路很新颖,也不知到底有多少人需要select可输入文字的功能,下面是详细的实现代码:前端资源分享 .代码   <div style="position:relative;">