Echarts概念与应用


echarts体育数据可视化 echarts数据可视化原理_数据

一.什么是Echarts?

ECharts是互联网开发程序过程中,后台数据库用以实现数据到图形的映射的一个插件。
具体来说一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器,底层依赖轻量级的矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。
简单来说ECharts是一个纯JavaScript图表库,底层依赖于轻量级的Canvas类库ZRender,基于BSD开原协议,是一款非常优秀的可视化前端框架。

二.为什么要使用Echarts?

1、丰富的可视化类型

提供了常规的图,盒形图,用于地理数据可视化的图,用于关系数据可视化的图,多维数据可视化的平行坐标,并且支持图与图之间的混搭。

echarts体育数据可视化 echarts数据可视化原理_图例_02

2、代码直接引用,

效率提升利器在官网的示例当中,左侧的代码可以直接套用、引用,改变属性,简直太好用了。

echarts体育数据可视化 echarts数据可视化原理_前端_03

3、增量渲染技术

千万级数据量不在话下通过增量渲染技术,即使展现千万级数据量也能够进行流畅的缩放平移等交互加载。

echarts体育数据可视化 echarts数据可视化原理_图例_04

4、无缝连接百度地图

实现地图视图作为百度的开源产品,Echarts与百度地图无缝连接,结合百度地图的图层,可以做出航线、地铁、公交等动态3D线路图,实现超炫的地图视图。

echarts体育数据可视化 echarts数据可视化原理_html_05

5、识别数据差异

让图表动起来Echarts会找到两组数据之间的差异,然后通过合适的动画去表现数据的变化,让数据动起来~

echarts体育数据可视化 echarts数据可视化原理_图例_06

三.如何使用Echarts?

1.首先在官网 选择合适的下载版本

官网地址:https://echarts.apache.org/zh/index.html

2.引入Echarts
<script  src="js/echarts.js"></script>

3.绘制一个简单的图表

准备一个DOM容器
<div class="chart" style="width: 800px; height: 800px;"></div>

4.创建一个简单的柱形图

//创建一个echarts的对象
        var char=echarts.init($('.chart').get(0));
        char.setOption({
            title:{    //标题组件,包含主标题和副标题   
                text:'柱状图'
            },
            legend:{  //图例组件。图例组件展现了不同系列的标记(symbol),
                      //颜色和名字。可以通过点击图例控制哪些系列不显示。
                data:["销量"]
            },
            xAxis:{  //直角坐标系中的 x 轴
                data:["2018","2019","2020","2021"]
            }, 
            yAxis:{   直角坐标系中的 y 轴

            },
            series:{  //系列列表。每个系列通过 type 决定自己的图表类型bar指的是柱形图
                name:"销量",
                type:"bar",
                data:[180,150,200,50]
            }
        });

在页面中展示的就是如下效果:

echarts体育数据可视化 echarts数据可视化原理_数据_07


也可以在官网上通过API调整它的样式如果想写一个饼图的话只需要找到Echarts 对象中的series对象中的 type属性改成饼图(pie)type:“pie”,

echarts体育数据可视化 echarts数据可视化原理_前端_08

var char=echarts.init($('.char').get(0));
        char.setOption({
            title:{  //标题
                text:"饼状图",
                show:true,
                link:'https://www.baidu.com',  //点击标题跳转地址
                textStyle:{  //标题颜色
                    color:'pink'
                },
                subtext:"垃圾数据",  //副标题
                left:40  //左边间隙40
            },
            legend:{   //图例
                data: ["Apple", "Grapes", "Pineapples", "Oranges"]
            },
            xAxis:{  //X轴
              
            },
            yAxis:{

            },
            series:{
                name:"数据",
                type:"pie",  //饼图
                data:[{value:50,name:"Apple"}, //数据
                      {value:80,name:"Grapes"},
                      {value:60,name:"Pineapples"},
                      {value:30,name:"Oranges"}]
                     },
        })

最后献上一个百家姓氏的小案例

echarts体育数据可视化 echarts数据可视化原理_图例_09

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="jquery.js"></script>
    <script src="echarts.js"></script>
    <style>
        .char1{
            width: 1400px;
            height: 800px;
          
        }
    </style>
</head>
<body>
    <div class="char1"></div>
    <script>
        //创建echarts对象
        var char1=echarts.init($('.char1').get(0));
        var data=show();  //接收函数
        char1.setOption({
            title:{         
                text:"饼状图",
                show:true,  //是否显示
            },
            legend:{
                data:data.legenddata,  //绑定图例数据
                selected:data.selected, //绑定是否默认显示数据
                left:'1200',   
                orient:'vertical',  //图例列表的布局朝向。
                type:'scroll',      //显示分页
                pageButtonPosition:'start',  //图例控制块的位置。
                pageIconSize:[30,30],  //图例的大小
                animation:true,   //是否启动图例动漫效果
                animationDurationUpdate:10000  //图例翻页时的动画时长。
            },
            series:{
                name:'姓氏',
                type:'pie',
                data:data.seriesdata  //绑定数据
            }
                    
        });
       // 封装的函数
        function show(){
            var arr=['赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈', '褚', '卫', '蒋', '沈', '韩', '杨', '朱', '秦', '尤', '许', '何', '吕', '施', '张', '孔', '曹', '严', '华', '金', '魏', '陶', '姜', '戚', '谢', '邹', '喻', '柏', '水', '窦', '章', '云', '苏', '潘', '葛', '奚', '范', '彭', '郎', '鲁', '韦', '昌', '马', '苗', '凤', '花', '方', '俞', '任', '袁', '柳', '酆', '鲍', '史', '唐', '费', '廉', '岑', '薛', '雷', '贺', '倪', '汤', '滕', '殷', '罗', '毕', '郝', '邬', '安', '常', '乐', '于', '时', '傅', '皮', '卞', '齐', '康', '伍', '余', '元', '卜', '顾', '孟', '平', '黄', '和', '穆', '萧', '尹', '姚', '邵', '湛', '汪', '祁', '毛', '禹', '狄', '米', '贝', '明', '臧', '计', '伏', '成', '戴', '谈', '宋', '茅', '庞', '熊', '纪', '舒', '屈', '项', '祝', '董', '梁', '杜', '阮', '蓝', '闵', '席', '季', '麻', '强', '贾', '路', '娄', '危'];
            //随机排序
            arr.sort(function(){
                return Math.random()-0.5;
            });
            var legenddata=[]; //用来接收拼接的姓
            var seriesdata=[];  //显示拼接的姓和value
            var selected={}; //用来接收图例的状态true,false
            //将arr分成70一组
            for(var i=0;i<70;i++){ 
            //拼接姓氏           
             var mark=arr[0]+arr[1];
             //每次循环往数组最后一个添加拼接姓氏 
             legenddata.push(mark);
             //每次循环往数组添加最后一个对象,储存拼接姓氏和随机值
             seriesdata.push({
                 name:mark,
                 value:Math.floor(Math.random()*1000)
             });
             //默认显示前6个姓氏true显示,false不显示
             selected[mark]=i<6;  //0,1,2,3,4,5前六个返回true,后64个返回false
             //每次循环删除数组第一个,防止拼接姓氏重复
             arr.shift();
             arr.shift();
            }
            //返回一个对象形式的,三个数组
            return{
                legenddata:legenddata,
                seriesdata:seriesdata,
                selected:selected
            }
        }
    </script>
</body>
</html>

用Echarts写一个中国地图

echarts体育数据可视化 echarts数据可视化原理_html_10

引入Echarts与
<script src="echarts.js"></script>
    <script src="china.js"></script>
china.js的插件可以在官网下载
创建一个容器
<div class="charts"></div>
全部代码:首先要设置Echarts对象下series的type:‘map’(地图), 与 map: ‘china’,(地图类型。)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="jquery.js"></script>
    <script src="echarts.js"></script>
    <script src="china.js"></script>
    <style>
        *{
            margin: 0px;
            padding: 0px;
        }
        html,body,.charts{
            width: 100%;
            height: 100%;
            background-color: aquamarine;

        }
    </style>
</head>
<body>
    <div class="charts"></div>

    <script>
         function random(){
             return Math.floor(Math.random()*1000)
        }
        var char=echarts.init($(".charts").get(0));
        char.setOption({
            visualMap: {
              //  type:'continuous',  连续式
                type:'piecewise',  //分段式
                target:{
                    inRange:{   //在选中范围内 的视觉元素
                        color:['rgb(100, 248, 199)','rgb(79, 252, 194)','rgb(0, 250, 167)']
                    },
                    outOfRange:{ //在选中范围外 的视觉元素
                        color:['rgb(241, 240, 135)','rgb(250, 247, 90)','rgb(255, 251, 3)']
                    }
                },
                controller:{
                    inRange:{   //在选中范围内 的视觉元素
                        color:['red']
                    },
                    outOfRange:{ //在选中 范围外 的视觉元素
                        color:['greed']
                    }
                }
            },
            series:{
                type:'map',
                map: 'china',
                data:[  { name: '北京', value: random() },
						{ name: '天津', value: random() },
						{ name: '上海', value: random() },
						{ name: '重庆', value: random() },
						{ name: '河北', value: random() },
						{ name: '河南', value: random() },
						{ name: '云南', value: random() },
						{ name: '辽宁', value: random() },
						{ name: '黑龙江', value: random() },
						{ name: '湖南', value: random() },
						{ name: '安徽', value: random() },
						{ name: '山东', value: random() },
						{ name: '新疆', value: random() },
						{ name: '江苏', value: random() },
						{ name: '浙江', value: random() },
						{ name: '江西', value: random() },
						{ name: '湖北', value: random() },
						{ name: '广西', value: random() },
						{ name: '甘肃', value: random() },
						{ name: '山西', value: random() },
						{ name: '内蒙古', value: random() },
						{ name: '陕西', value: random() },
						{ name: '吉林', value: random() },
						{ name: '福建', value: random() },
						{ name: '贵州', value: random() },
						{ name: '广东', value: random() },
						{ name: '青海', value: random() },
						{ name: '西藏', value: random() },
						{ name: '四川', value: random() },
						{ name: '宁夏', value: random() },
						{ name: '海南', value: random() },
						{ name: '台湾', value: random() },
						{ name: '香港', value: random() },
						{ name: '澳门', value: random() }]
            }
        })
    </script>
</body>
</html>




echarts体育数据可视化 echarts数据可视化原理_图例_11