相关文章推荐
空虚的西瓜  ·  Error querying ...·  2 月前    · 
开朗的啄木鸟  ·  C++ AMP 概觀 | ...·  4 月前    · 
苦闷的茴香  ·  SHOW WARNINGS | ...·  1 年前    · 
强健的硬币  ·  dom4j ...·  1 年前    · 
大数据可视化【03】——引入各式各样的Echarts 图表

大数据可视化【03】——引入各式各样的Echarts 图表



接着第二章


学完第三章




我有点强迫症,今日事必须今日毕,不管晚上搞到几点。

【导图】




一、Echarts介绍

【1.1】其他相关常见的数据可视化库

  • D3.js 目前 Web 端评价最高的 Javascript 可视化工具库(入手难)
  • ECharts.js 百度出品的一个开源 Javascript 数据可视化库
  • Highcharts.js 国外的前端数据可视化库,非商用免费,被许多国外大公司所使用
  • AntV 蚂蚁金服全新一代数据可视化解决方案 等等
  • Highcharts 和 Echarts 就像是 Office 和 WPS 的关系

【1.2】Echarts简介

ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖矢量图形库 ZRender ,提供直观,交互丰富,可高度个性化定制的数据可视化图表。

【1.3】Echarts常用图表

有官方版和社区版。



二、五分钟快速上手Echarts

  1. 下载并引入Echarts.js文件(要生成的图表需要依赖这个js库才能实现)
  2. 准备一个具有特定大小的DOM容器,以把我们的图表放置于其中,而且容器必须要有宽度和高度。(我们第二章中已经配置完毕了)
  3. 初始化echarts实例对象
  4. 指定配置项和数据
  5. 将配置项设置给Echarts实例对象



【2.1】下载并引入echarts.js文件

下载好后将这个echarts.min.js放置在js文件夹内,方便我们调用。

然后body中引入echarts脚本就好了。

<html>
 <meta charset ="utf-8">
 <!-- char字符 set集  字符集,使用UTF-8编码,浏览器上可以显示各国语言的文字,不必下载相关语言支持包 -->
 <meta name="viewport" content="width=device-width,initial-scale=1.0">
 <!--viewport窗口,width设置网页布局宽度,device-width为设备物理宽度,initial-scale设置初始缩放值  -->
 </head>
     <script src='js/echarts.min.js'></script>
 </body>
</html>



【2.2】准备DOM容器,给容器配置高度宽度

  1. .box分区
  2. head中内嵌css文件
<html>
 <meta charset ="utf-8">
 <!-- char字符 set集  字符集,使用UTF-8编码,浏览器上可以显示各国语言的文字,不必下载相关语言支持包 -->
 <meta name="viewport" content="width=device-width,initial-scale=1.0">
 <!--viewport窗口,width设置网页布局宽度,device-width为设备物理宽度,initial-scale设置初始缩放值  -->
 <style>
     .box{
         width: 300px;
         height: 300px;
         background-color: green;
 </style>
 </head>
     <div class="box"></div>
     <script src='js/echarts.min.js'></script>
 </body>
</html>



【2.3】实例化echarts对象

  • echarts.init() 来实例化
  • document.querySelector() 来查询dom容器并写入图表
<html>
 <meta charset ="utf-8">
 <!-- char字符 set集  字符集,使用UTF-8编码,浏览器上可以显示各国语言的文字,不必下载相关语言支持包 -->
 <meta name="viewport" content="width=device-width,initial-scale=1.0">
 <!--viewport窗口,width设置网页布局宽度,device-width为设备物理宽度,initial-scale设置初始缩放值  -->
 <style>
     .box{
         width: 300px;
         height: 300px;
         background-color: green;
 </style>
 </head>
     <div class="box"></div>
     <script src='js/echarts.min.js'></script>
     <script>
        //  初始化实例对象 echarts.init(DOM容器)
         var xtesla = echarts.init(document.querySelector(".box"));
     </script>
 </body>
</html>



【2.4】指定配置项和数据

  • var option 来配置图表数据
  • 复制教程内的set option
<html>
 <meta charset ="utf-8">
 <!-- char字符 set集  字符集,使用UTF-8编码,浏览器上可以显示各国语言的文字,不必下载相关语言支持包 -->
 <meta name="viewport" content="width=device-width,initial-scale=1.0">
 <!--viewport窗口,width设置网页布局宽度,device-width为设备物理宽度,initial-scale设置初始缩放值  -->
 <style>
     .box{
         width: 500px;
         height: 500px;
         background-color: green;
 </style>
 </head>
     <div class="box"></div>
     <!-- 引入echarts 图表 -->
     <script src='js/echarts.min.js'></script>
     <script>
        //  初始化实例对象 echarts.init(DOM容器)
         var xtesla = echarts.init(document.querySelector(".box"));
         //指定配置项和数据
         var option = {
            title: {
                text: 'ECharts 入门示例'
            tooltip: {},
            legend: {
                data:['销量']
            xAxis: {
                data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
            yAxis: {},
            series: [{
                name: '销量',
                type: 'bar',
                data: [5, 20, 36, 10, 10, 20]
     </script>
 </body>
</html>



【2.5】将配置项设置给echarts实例对象

<html>
 <meta charset ="utf-8">
 <!-- char字符 set集  字符集,使用UTF-8编码,浏览器上可以显示各国语言的文字,不必下载相关语言支持包 -->
 <meta name="viewport" content="width=device-width,initial-scale=1.0">
 <!--viewport窗口,width设置网页布局宽度,device-width为设备物理宽度,initial-scale设置初始缩放值  -->
 <style>
     .box{
         width: 500px;
         height: 500px;
         background-color: green;
 </style>
 </head>
     <div class="box"></div>
     <!-- 引入echarts 图表 -->
     <script src='js/echarts.min.js'></script>
     <script>
        //  初始化实例对象 echarts.init(DOM容器)
         var xtesla = echarts.init(document.querySelector(".box"));
         //指定配置项和数据
         var option = {
            title: {
                text: 'ECharts 入门示例'
            tooltip: {},
            legend: {
                data:['销量']
            xAxis: {
                data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
            yAxis: {},
            series: [{
                name: '销量',
                type: 'bar',
                data: [5, 20, 36, 10, 10, 20]
         // 将配置项设置给echarts实例对象
          xtesla.setOption(option);
     </script>
 </body>
</html>

然后基础入门就入门成功了。



三、Echarts 基础配置

官网文档中找到配置项手册,就可以找到图表所有的属性了。

我们拿这个折线图来举例。

每个配置后面都要用 逗号隔开。

【01 基本图表配置】

  • title——标题(html中的title标签定义网页标签页的名字,默认是xxx.html)
  • tooltip——提示框(鼠标悬浮的时候出现的框框)
    • trigger——触发方式
      • axis放在坐标轴上显示框框 (多个数据排列)
      • item放在单个元素上显示框框(单个数据)
      • none 不触发
  • legend——图例组件,如果series中对象有name,那么legend中的data可以删掉。
  • toolbox——工具箱组件(如保存图片、下载内容)

【02 坐标系相关配置】

  • grid——网格配置(注意跟DOM容器的区别),grid可以控制线型图、柱状图的图表大小。
    • left right bottom top 定义grid网格和DOM容器之间的距离
    • containLabel 是否显示刻度值,true显示,false不显示
  • xAxis/ yAxis——设置X轴的相关配置
    • type 坐标轴类型
      • category 类目轴(自定义数据类别)
      • value 数值轴(数字)
    • boundaryGap 是否让坐标轴跟内容之间有缝隙(一般为false)

【03 系列图表配置】

series后面跟的是数组,数组内对象的名字要跟legend图例组件中的名字要保持一致,而删掉一个对象的话,legend对应的这个图例名称也会消失;当然可以直接删掉legend中的data,因为是会根据series中的name自动生成的嘛 。


  • name——图表
  • type——图表样式,它决定显示哪种类别的图表
    • line 线条
    • bar 柱状图
    • pie 饼状图
  • stack——数据堆叠(一般不需要),如果true的话,第二个对象的数据会在第一个对象的数据基础上进行叠加,如第一个对象第一个数据为120,第二个对象第一个数据为150。
    • true的话,第二个会变成270在图表上排布
    • false的话,第二个还是150在图表上排布
  • data——每条线上相关的数据


给定线条不同的颜色,注意要把代码写在跟title、series同级下。(注意最后面的逗号哈)

color:['red',"green","skyblue","white","blue"],



四、竖直柱状图的制作

【4.1】引入基础竖直柱状图


我们可以使用这个坐标轴刻度与标签对齐 柱状图图表。

  1. 我们先跟之前一样,引入echarts.js ,注意Echarts.js在html中放置的顺序也很有讲究,要放在section mainbox 后执行。
  2. 然后再在js文件夹中新建一个index.js 文件专门来存放我们的图表配置,然后html中同样引入。
  3. 使用立即执行函数,防止变量污染,局部变量。省得定义mychart1,mychart2了。
  4. queryselector柱状图中的图表。
  5. 别忘了给option 前加var,定义option变量。
//柱状图模块1
(function(){
    //1.实例化对象
    var myChart=echarts.init(document.querySelector(".bar .chart"));
    //2.指定配置项和数据 option
    var option = {
        color: ['#3398DB'],
        tooltip: {
            trigger: 'axis',
            axisPointer: {            // 坐标轴指示器,坐标轴触发有效
                type: 'shadow'        // 默认为直线,可选为:'line' | 'shadow'
        grid: {
            left: '3%',
            right: '4%',
            bottom: '3%',
            containLabel: true
        xAxis: [
                type: 'category',
                data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
                axisTick: {
                    alignWithLabel: true
        yAxis: [
                type: 'value'
        series: [
                name: '直接访问',
                type: 'bar',
                barWidth: '60%',
                data: [10, 52, 200, 334, 390, 330, 220]
    //3.将配置项给到echarts实例对象
    myChart.setOption(option);
})();



【4.2】自定义柱状图图表 整体和x 轴

【1】修改柱形颜色,直接改 color:['xxxxxx'],

【2】修改图表大小,直接改grid

【3】修改横坐标轴刻度文字颜色、大小。

axislabel 坐标轴刻度标签。

【4】不显示x坐标轴样式

axisline show


  var option = {
        //修改柱形颜色
        color: ['#2f89cf'],
        tooltip: {
            trigger: 'axis',
            axisPointer: {            // 坐标轴指示器,坐标轴触发有效
                type: 'shadow'        // 默认为直线,可选为:'line' | 'shadow'
        //修改图表大小
        grid: {
            left: '0%',
            top: '10%',
            right:'0%',
            bottom: '4%',
            containLabel: true
        xAxis: [
                type: 'category',
                data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
                axisTick: {
                    alignWithLabel: true
                //修改横轴刻度文字颜色
                axisLabel:{
                    color:"rgba(255,255,255,.6)",
                    fontsize:12,
                axisLine:{
                    show:false




【4.3】自定义柱状图图表 y 轴

【1】改 label 字体颜色和大小

axislabel.color/fontsize

【2】改y轴线条样式

axisline.linestyle.color/width

【3】改y轴分割线样式

splitline.linestyle.color/width


   yAxis: [
                type: 'value',
                axisLabel:{
                    color:"rgba(255,255,255,.6)",
                    fontsize:12,
                //修改y轴线条样式
                axisLine:{
                    LineStyle:{
                        color:"rgba(255,255,255,.1)",
                        width:2
                splitLine:{
                    lineStyle:{
                        color:"rgba(255,255,255,.1)",



【4.4】最终自定义柱状图图表

【1】柱状图变细,直角变圆角

        series: [
                name: '直接访问',
                type: 'bar',
                //修改bar的宽度
                barWidth: '35%',
                data: [10, 52, 200, 334, 390, 330, 220],
                //直角变圆角
                itemStyle:{
                    barBorderRadius:5

【2】更改tooltip悬浮框背景(可选,shadow好看点)

  //修改柱形颜色
        color: ['#2f89cf'],
        tooltip: {
            trigger: 'axis',
            axisPointer: {            // 坐标轴指示器,坐标轴触发有效
                type: 'shadow'        // 默认为直线,可选为:'line' | 'shadow'


【3】更换xy轴对应数据

//柱状图模块1
(function(){
    //1.实例化对象
    var myChart=echarts.init(document.querySelector(".bar .chart"));
    //2.指定配置项和数据 option
    var option = {
        //修改柱形颜色
        color: ['#2f89cf'],
        tooltip: {
            trigger: 'axis',
            axisPointer: {            // 坐标轴指示器,坐标轴触发有效
                type: 'shadow'        // 默认为直线,可选为:'line' | 'shadow'
        //修改图表大小
        grid: {
            left: '0%',
            top: '10%',
            right:'0%',
            bottom: '4%',
            containLabel: true
        xAxis: [
                type: 'category',
                data: [ "旅游行业","教育培训", "游戏行业", "医疗行业", "电商行业", "社交行业", "金融行业" ],
                axisTick: {
                    alignWithLabel: true
                //修改横轴刻度文字颜色
                axisLabel:{
                    color:"rgba(255,255,255,.6)",
                    fontsize:12,
                axisLine:{
                    show:false
        yAxis: [
                type: 'value',
                axisLabel:{
                    color:"rgba(255,255,255,.6)",
                    fontsize:12,
                //修改y轴线条样式
                axisLine:{
                    LineStyle:{
                        color:"rgba(255,255,255,.1)",
                        width:2
                splitLine:{
                    lineStyle:{
                        color:"rgba(255,255,255,.1)",
        series: [
                name: '直接访问',
                type: 'bar',
                //修改bar的宽度
                barWidth: '35%',
                data: [200, 300, 300, 900, 1500, 1200, 600],
                //直角变圆角
                itemStyle:{
                    barBorderRadius:5
    //3.将配置项给到echarts实例对象
    myChart.setOption(option);
})();




【4.5】图表跟随屏幕自适应

    //4. 让图表跟随屏幕自适应
    window.addEventListener("resize",function(){
        myChart.resize();





五、学习进度柱形图(水平柱状图)

我们用这个水平柱状图


【5.1】导入水平柱状图


  1. charts.js中新建 水平柱状图立即执行模块 (function(){ })();
  2. index.html中第三列图表panel 重命名 bar2 line2 pie2 这样子。
  3. charts.js中实例对象、指定配置数据、把配置给实例对象
    // 二、水平柱状图
    (function(){
        // 1.实例化echarts对象
        var myChart= echarts.init(document.querySelector(".bar2 .chart"));
        // 指定配置和数据
       var option = {
            tooltip: {
                trigger: 'axis',
                axisPointer: {
                    type: 'shadow'
            grid: {
                left: '3%',
                right: '4%',
                top:'0%',
                bottom: '3%',
                containLabel: true
            xAxis: {
                type: 'value',
                boundaryGap: [0, 0.01]
            yAxis: {
                type: 'category',
                data: ['巴西', '印尼', '美国', '印度', '中国', '世界人口(万)']
            series: [
                    name: '2011年',
                    type: 'bar',
                    data: [18203, 23489, 29034, 104970, 131744, 630230]
                    name: '2012年',
                    type: 'bar',
                    data: [19325, 23438, 31000, 121594, 134141, 681807]
        myChart.setOption(option);
    })();

还是注意哈,如果出不来就是echarts.min.js和charts.js在index.html中放置的位置不对,不要放在开头,而要放在结尾处。




【5.2】调整图像


【1】修改图形大小,grid中设置

 grid: {
                left: '22%',
                right: '0%',
                top:'10%',
                bottom: '10%',
                containLabel: true

【2】不显示x轴

//不显示x轴的相关信息
            xAxis: {
                show:false,
            },

【3】不显示y轴线和相关刻度(短横线)

axisLine:
                    show:false
                axisTick:
                {show:false,},

【4】设置y轴文字(刻度标签)颜色为白色

axisLabel:{
                    color:"#fff",



【5.3】修改第一组bar


【1】containLabel包含标签注释掉,这样上面那个 22%left 就直接是里面的图表相对于外面的DOM容器,文字 标签排外,也就是竖直文字标签跟图表不是一个区域内了。

【2】修改第一组柱子相关形式,将bar直角变圆角

 itemStyle:{
                        barBorderRadius:20

【3】修改柱子之间的距离

  name: '条',
                    type: 'bar',
                    data: [18203, 23489, 29034, 104970, 131744, 630230],
                    // 修改第一组柱子的圆角
                    itemStyle:{
                        barBorderRadius:20
                    //修改柱子间的距离
                    barCategoryGap:50,
                    //修改柱子 的宽度
                    barWidth:10,




【5.4】设置第一组柱子内的百分比显示数据


【1】label标签是可以在图形上显示文本的标签。

【2】position inside 在图形内显示文字

【3】formatter 自动将int 转化为string,即自动解析数据并显示在图表上。

  • a 系列名
  • b 数据名
  • c 数据值


  label:
                        show:true,
                        position:'inside',
                        // {c}会自动地解析数据,将数据转化为string显示在图表上(integer to string)
                        formatter:"{c}%",
                    }  label:
                        show:true,
                        position:'inside',
                        // {c}会自动地解析数据,将数据转化为string显示在图表上(integer to string)
                        formatter:"{c}%",



【5.5】给柱子设置不同的颜色

itemStyle中可以对单个柱子设置颜色。

声明数组来定义颜色。dataindex来返回索引,然后根据索引来指定颜色。

可以通过console.log(params)来检查。

访问params.dataIndex即可。

 (function(){
        var myColor=['#1089E7','#F57474','#56D0E3','E8B448','#8B78F6'];
        // 1.实例化echarts对象
        var myChart= echarts.init(document.querySelector(".bar2 .chart"));
        // 指定配置和数据
       var option = {
            tooltip: {
                trigger: 'axis',
                axisPointer: {
                    type: 'shadow'
            grid: {
                left: '22%',
                right: '0%',
                top:'10%',
                bottom: '10%',
                // containLabel: true
//不显示x轴的相关信息
            xAxis: {
                show:false,
            yAxis: {
                axisLine:
                    show:false
                axisTick:
                    show:false,
                axisLabel:{
                    color:"#fff",
                type: 'category',
                data: [ '印尼', '美国', '印度', '中国', '世界人口(万)']
            series: [
                    name: '条',
                    type: 'bar',
                    data: [ 23489, 29034, 104970, 131744, 630230],
                    // 修改第一组柱子的圆角
                    itemStyle:{
                        barBorderRadius:20,
                        //更改每个柱子的颜色
                        color: function(params){
                            // console.log(params);
                            return myColor[params.dataIndex];
                    //修改柱子间的距离
                    barCategoryGap:50,
                    //修改柱子 的宽度
                    barWidth:10,
                    //显示柱子内的文字
                    label:
                        show:true,
                        position:'inside',
                        // {c}会自动地解析数据,将数据转化为string显示在图表上(integer to string)
                        formatter:"{c}%",
                    name: '2012年',
                    type: 'bar',
                    data: [ 23438, 31000, 121594, 134141, 681807]
        myChart.setOption(option);
    })();



【5.6】修改第二组柱子的相关配置


【1】不要柱子颜色,而要把柱子变成border边框。

  {
                    name: '框',
                    //修改柱子间的距离
                    barCategoryGap:50,
                    //修改柱子 的宽度
                    barWidth:15,
                    type: 'bar',
                    itemStyle:{
                        color:"none",
                        borderColor:'#00c1de',
                        borderWidth:3,
                        barBorderRadius:15,
                    data: [ 23438, 31000, 121594, 134141, 681807]

【2】给第二个框框 y 轴 后面加上文字

y axis 大括号变中括号,中括号是包含数组的,可以写两个y标度尺,跟series两个条对应起来。

复制一份就好了。

如果出不来的话,需要调整grid.right或者是关掉containLabel 看效果。

 yAxis:[ {
                type: 'category',
                data: ["HTML5", "CSS3", "javascript", "VUE", "NODE"],
                axisLine:
                    show:false
                axisTick:
                    show:false,
                axisLabel:{
                    color:"#fff",
                type: 'category',
                data:wdata,
                axisLine:
                    show:false
                axisTick:
                    show:false,
                axisLabel:{
                    color:"#fff",




【5.7】设置两组数据层叠以及更换数据


【1】外框包住水平柱形图

  • series 第一个对象添加 yAxisIndex:0
  • series 第二个对象添加 yAxisIndex:1

【2】更换数据

  • 左列名称
  • 100%数值
  • 以及其上的特定数值



【5.8】翻转数据

yaxis.inverse 是否反向数据。

yaxis:[{
inverse:true,

可以把图表适配也给加上。



六、折线图


使用这个Stacked Line Chart 案例。

还是之前的步骤。

【6.1】导入折线图图表

    // 三、折线图1制作
    (function(){
      var myChart = echarts.init(document.querySelector(".line .chart"));
     var  option = {
        tooltip: {
            trigger: 'axis'
        legend: {
            data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎']
        grid: {
            left: '3%',
            right: '4%',
            bottom: '3%',
            containLabel: true
        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]
    myChart.setOption(option);
    window.addEventListener("resize",function(){
        myChart.resize();
    })();



【6.2】定制grid 网格

【1】改边框

 grid: {
            left: '3%',
            right: '4%',
            bottom: '3%',
            top:"20%",
            show:true,//显示边框
            borderColor:"#013f4a",//边框颜色
            containLabel: true,//包含标签在图表内


【2】改legend 文字颜色和位置

  legend: {
            data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎'],
            textStyle:{
                color:"#4c9bfd"
            right: "10%" , //距离右边10%



【6.3】定制x轴和y轴以及分割线相关配置


x轴:

  • axisTick去除刻度线
  • axisLabel 标签文本颜色
  • axisLine 去除轴线
  • boundaryGap 去除轴内间距
  xAxis: {
            type: 'category',
            boundaryGap: false,
            data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
            axisTick:{
                show:false,
            axisLabel:{
                color:"#4c9bfd",
            axisLine:{
                show:false,


y轴:跟x轴一样,再复制一份就好了。

改分割线还是用 splitLine 中的 linestyle来修改。

 yAxis: {
            type: 'value',
            boundaryGap: false,
            axisTick:{
                show:false,
            axisLabel:{
                color:"#4c9bfd",
            axisLine:{
                show:false,
            splitLine:{
                lineStyle:{
                    color:"#012f4a",



【6.4】定制两条折线的样式


【1】定制颜色,option中添加。

  color:['#00f2f1','#ed3f35'],

【2】平滑折线,在series中添加

smooth:true,



【6.5】数据更换


更改横轴坐标信息,把星期改为12个月份。

更改折线数据



【6.6】折线图跟随年份动态变换分析

【1】 html中添加两个链接,指向javascript脚本

  <div class="panel line">
                        折线图-人员变化
                        <a href= "javascript:;"> 2020 </a>
                        <a href= "javascript:;"> 2021 </a>
                    <div class="chart"></div>
                     <div class="panel-footer"></div>
                     </div>


【2】定义less内容

添加h2二号标题标签属性。

    h2{
        height:.6rem;
        color: white;
        line-height: .6rem;
        text-align: center;
        font-size: .25rem;
        font-weight: 400;
            color: #fff;
            text-decoration: underline;
            margin:0 0.125erm;
        }



【6.7】定义点击行为,准备两套数据

【1】引入jquery.js,这样才可以用$来查询(注意还是在html文档最末端引入,而且在charts.js的前面)

然后当点击 2020/2021的字样时才会有效。

 <script src='js/flexible.js'></script>
        <script src="js/echarts.min.js"></script>
        <script src='js/jquery.js'></script>
        <script src="js/charts.js"></script>

【2】js中写测试脚本,alert

    //5.点击切换效果
    $('.line h2').on('click','a',function(){
        alert(1);

【3】this指针 测试看点了哪个链接,返回当前索引

  //5.点击切换效果
    $('.line h2').on('click','a',function(){
        // alert(1);
        console.log($(this).index());


【4】返回year data

//5.点击切换效果
    $('.line h2').on('click','a',function(){
        // alert(1);
        // console.log($(this).index());
        console.log(yeardata[($(this).index())]);


【5】因为series在option里面,所以我们option.series来get 数据

    //5.点击切换效果
    $('.line h2').on('click','a',function(){
        // alert(1);
        // console.log($(this).index());
        // console.log(yeardata[($(this).index())]);
        var obj=yeardata[$(this).index()];
        option.series[0].data=obj.data[0];
        option.series[1].data=obj.data[1];
        myChart.setOption(option);

data数据我只是更改了一下顺序。


【6】更换series中的数据为 yeardata中的数据。

        series: [
                name: '新增粉丝',
                type: 'line',
                data:  yeardata[0].data[0],
                smooth:true,
                name: '新增游客',
                type: 'line',
               data: yeardata[0].data[1],
                smooth:true,
    myChart.setOption(option);
    window.addEventListener("resize",function(){
        myChart.resize();
    //5.点击切换效果
    $('.line h2').on('click','a',function(){
        // alert(1);
        // console.log($(this).index());
        // console.log(yeardata[($(this).index())]);
        var obj=yeardata[$(this).index()];
        option.series[0].data=obj.data[0];
        option.series[1].data=obj.data[1];
        //重新渲染数据
        myChart.setOption(option);


好了第一个折线图表就制作完毕了。



【6.8】折线图带阴影 导入。


先找模板再自定义修改。

 (function(){
        var myChart=echarts.init(document.querySelector(".line2 .chart"));
       var option = {
            tooltip: {
                trigger: 'axis',
            legend: {
                data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎']
            grid: {
                left: '3%',
                right: '4%',
                bottom: '3%',
                containLabel: true
            xAxis: [
                    type: 'category',
                    boundaryGap: false,
                    data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
            yAxis: [
                    type: 'value'
            series: [
                    name: '邮件营销',
                    type: 'line',
                    stack: '总量',
                    areaStyle: {},
                    data: [120, 132, 101, 134, 90, 230, 210]
                    name: '联盟广告',
                    type: 'line',
                    stack: '总量',
                    areaStyle: {},
                    data: [220, 182, 191, 234, 290, 330, 310]
    })();



【6.9】折线图优化



【1】换legend文字颜色

   legend: {
                data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎'],
                textStyle:{
                    color:"rgba(255,255,255,.5",


【2】修改图表大小

  grid: {
                left: '10',
                right: '10',
                bottom: '10',
                top:"30",
                containLabel: true
            },


【3】修改x轴

 xAxis: [
                    type: 'category',
                    boundaryGap: false,
                    data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
                    axisLabel:{
                        color:"rgba(255,255,255,.6",
                    axisLine:{
                        lineStyle:{
                           color:"rgba(255,255,255,.6",

【4】修改y轴

复制x轴的

【5】splitline alpha透明度低一点。


 折线图2制作
    (function(){
        var myChart=echarts.init(document.querySelector(".line2 .chart"));
       var option = {
            tooltip: {
                trigger: 'axis',
            legend: {
                data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎'],
                textStyle:{
                    color:"rgba(255,255,255,.5",
            grid: {
                left: '10',
                right: '10',
                bottom: '10',
                top:"30",
                containLabel: true
            xAxis: [
                    type: 'category',
                    boundaryGap: false,
                    data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
                    axisLabel:{
                        color:"rgba(255,255,255,.6",
                    axisLine:{
                        lineStyle:{
                           color:"rgba(255,255,255,.6",
            yAxis: [
                    type: 'value',
                    boundaryGap: false,
                    data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
                    axisLabel:{
                        color:"rgba(255,255,255,.6",
                    axisLine:{
                        lineStyle:{
                           color:"rgba(255,255,255,.6",
                    splitLine:{
                        lineStyle:{
                            color:"rgba(255,255,255,.1"
            series: [
                    name: '邮件营销',
                    type: 'line',
                    areaStyle: {},
                    data: [120, 132, 101, 134, 90, 230, 210]
                    name: '联盟广告',
                    type: 'line',
                    areaStyle: {},
                    data: [220, 182, 191, 234, 290, 330, 310]
    })();



【6.10】定制填充渐变区域



【1】smooth 圆滑

【2】linestyle.color 改颜色 ,linestyle.width 更改线的粗细,或虚线实线

【3】areaStyle更改 区域填充颜色

【4】渐变色 areaStyle

areaStyle:{
                        color:new echarts.graphic.LinearGradient(
                                    offset:0,
                                    color:"rgba(1,132,213,0.4)",
                                    offset:0.8,
                                    color:"rgba(1,132,213,0.1)",
                            ],false


【5】Shadow Color

shadowColor:"rgba(0,0,0,0.1)",





【6.11】折线图第一个线条配置

symbol 符号设置小拐点。

【1】不显示小拐点

showSymbol: false,

【2】itemstyle 设置拐点颜色及边框(加个半透明的效果)

  itemStyle:{
                        color:"#0184d5",
                        borderColor:"rgba(221,220,107,0.1)",
                        borderWidth:12,
                    },

【3】设置拐点样式和大小

symbol:"circle",
                    symbolSize:8,



【6.12】折线图第二个线条配置

跟上面一样,复制一份就好了。

【1】设置第二线条颜色渐变

【2】更换数据

【3】屏幕适配



 // ------------------------------------------------------------
    // 四、 折线图2制作
    (function(){
        var myChart=echarts.init(document.querySelector(".line2 .chart"));
       var option = {
            tooltip: {
                trigger: 'axis',
            legend: {
                data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎'],
                textStyle:{
                    color:"rgba(255,255,255,.5",
            grid: {
                left: '10',
                right: '10',
                bottom: '10',
                top:"30",
                containLabel: true
            xAxis: [
                    type: 'category',
                    boundaryGap: false,
                    data: [
                        "01",
                        "02",
                        "03",
                        "04",
                        "05",
                        "06",
                        "07",
                        "08",
                        "09",
                        "11",
                        "12",
                        "13",
                        "14",
                        "15",
                        "16",
                        "17",
                        "18",
                        "19",
                        "20",
                        "21",
                        "22",
                        "23",
                        "24",
                        "25",
                        "26",
                        "27",
                        "28",
                        "29",
                    axisLabel:{
                        color:"rgba(255,255,255,.6",
                    axisLine:{
                        lineStyle:{
                           color:"rgba(255,255,255,.6",
            yAxis: [
                    type: 'value',
                    boundaryGap: false,
                    data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
                    axisLabel:{
                        color:"rgba(255,255,255,.6",
                    axisLine:{
                        lineStyle:{
                           color:"rgba(255,255,255,.6",
                    splitLine:{
                        lineStyle:{
                            color:"rgba(255,255,255,.1"
            series: [
                    name: '邮件营销',
                    type: 'line',
                    smooth:true,
                    //单独修改当前线条的样式
                    lineStyle:{
                        color:"#0184d5",
                        width:'2',
                    areaStyle:{
                        color:new echarts.graphic.LinearGradient(
                                    offset:0,
                                    color:"rgba(1,132,213,0.4)",
                                    offset:0.8,
                                    color:"rgba(1,132,213,0.1)",
                            ],false
                    shadowColor:"rgba(0,0,0,0.1)",
//设置拐点
                    symbol:"circle",
                    symbolSize:8,
                    itemStyle:{
                        color:"#0184d5",
                        borderColor:"rgba(221,220,107,0.1)",
                        borderWidth:12,
                    showSymbol: false,
                     data: [
                    name: '联盟广告',
                    type: 'line',
                    smooth:true,
                    lineStyle:{
                        color:"#00d887",
                        width:'2',
                    areaStyle:{
                        color:new echarts.graphic.LinearGradient(
                                    offset:0,
                                    color:"rgba(0,216,135,0.4)",
                                    offset:0.8,
                                    color:"rgba(0,216,135,0.1)",
                            ],false
                    shadowColor:"rgba(0,0,0,0.1)",
//设置拐点
                    symbol:"circle",
                    symbolSize:8,
                    itemStyle:{
                        color:"#00d887",
                        borderColor:"rgba(221,220,107,0.1)",
                        borderWidth:12,
                    showSymbol: false,




七、饼形图

【7.1】引入doughnut 饼图


  1. 实例化对象
  2. 指定配置
  3. 把配置给实例对象
(function(){
    var myChart=echarts.init(document.querySelector(".pie .chart"));
    var option = {
        tooltip: {
            trigger: 'item',
            formatter: '{a} <br/>{b}: {c} ({d}%)'
        legend: {
            orient: 'vertical',
            left: 10,
            data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎']
        series: [
                name: '访问来源',
                type: 'pie',
                radius: ['50%', '70%'],
                avoidLabelOverlap: false,
                label: {
                    show: false,
                    position: 'center'
                labelLine: {
                    show: false
                data: [
                    {value: 335, name: '直接访问'},
                    {value: 310, name: '邮件营销'},
                    {value: 234, name: '联盟广告'},
                    {value: 135, name: '视频广告'},
                    {value: 1548, name: '搜索引擎'}
    myChart.setOption(option);
})();

【7.2】定制饼形图


【1】不垂直分布,删掉orient vertical。

【2】left 改为 bottom,0

【3】修改小图标的宽度和高度,用itemWidth/Height 来调节。

 legend: {
            bottom: 0,
            itemWidth:10,
            itemHeight:10,
            data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎']

【4】修改legend 文字样式,用text style



【7.3】修改饼形图的大小



用radius 来修改图形大小,内圆和外圆。

radius:['内径','外径’]

label显示图形上的文字,labelline 链接文字和图形的线。


【7.4】修改数据



value 影响饼图占比。

color 更改饼图颜色,放在option 中。

center 修改圆的圆心位置

最后别忘了屏幕适配。


【7.5】引入南丁格尔玫瑰图

// 六、南丁格尔玫瑰图制作
(function(){
    var myChart =echarts.init(document.querySelector(".pie2 .chart"));
    option = {
        tooltip: {
            trigger: 'item',
            formatter: '{a} <br/>{b} : {c} ({d}%)'
        legend: {
            left: 'center',
            top: 'bottom',
            data: ['rose1', 'rose2', 'rose3', 'rose4', 'rose5', 'rose6', 'rose7', 'rose8']
        series: [
                name: '面积模式',
                type: 'pie',
                radius: [30, 110],
                center: ['75%', '50%'],
                roseType: 'area',
                data: [
                    {value: 10, name: 'rose1'},
                    {value: 5, name: 'rose2'},
                    {value: 15, name: 'rose3'},
                    {value: 25, name: 'rose4'},
                    {value: 20, name: 'rose5'},
                    {value: 35, name: 'rose6'},
                    {value: 30, name: 'rose7'},
                    {value: 40, name: 'rose8'}
    myChart.setOption(option);
    window.addEventListener("resize",function(){
        myChart.resize();
})();




【7.6】定制玫瑰图上

【1】设置颜色

【2】修改大小 radius

【3】把饼形图的显示模式改为 半径模式

roseType:‘radius’,

【4】数据更换


// 六、南丁格尔玫瑰图制作
(function(){
    var myChart =echarts.init(document.querySelector(".pie2 .chart"));
    option = {
        color: [
            "#006cff",
            "#60cda0",
            "#ed8884",
            "#ff9f7f",
            "#0096ff",
            "#9fe6b8",
            "#32c5e9",
            "#1d9dff"
        tooltip: {
            trigger: 'item',
            formatter: '{a} <br/>{b} : {c} ({d}%)'
        legend: {
            left: 'center',
            top: 'bottom',
            data: ['rose1', 'rose2', 'rose3', 'rose4', 'rose5', 'rose6', 'rose7', 'rose8']
        series: [
                name: '地区分布',
                type: 'pie',
                radius: [10, 70],
                center: ['50%', '50%'],
                roseType: 'radius',
                data: [
                    { value: 20, name: "云南" },
                    { value: 26, name: "北京" },
                    { value: 24, name: "山东" },
                    { value: 25, name: "河北" },
                    { value: 20, name: "江苏" },
                    { value: 25, name: "浙江" },
                    { value: 30, name: "深圳" },
                    { value: 42, name: "广东" }
    myChart.setOption(option);
    window.addEventListener("resize",function(){
        myChart.resize();
})();



【7.7】定制玫瑰图下


【1】修改文字大小 通过label 修改

【2】修改线条(视觉引导线)粗细 labelline修改

length 链接图形,length2链接文字。

【3】修改图例legend 大小位置、文字颜色


// 六、南丁格尔玫瑰图制作
(function(){
    var myChart =echarts.init(document.querySelector(".pie2 .chart"));
    option = {
        color: [
            "#006cff",
            "#60cda0",
            "#ed8884",
            "#ff9f7f",
            "#0096ff",
            "#9fe6b8",
            "#32c5e9",
            "#1d9dff"
        tooltip: {
            trigger: 'item',
            formatter: '{a} <br/>{b} : {c} ({d}%)'
        legend: {
            bottom: 0,
            itemWidth:10,
            itemHeight:10,
            textStyle:{
                color:"rgba(255,255,255,.5)",
        series: [
                name: '地区分布',
                type: 'pie',
                radius: [10, 70],
                center: ['50%', '50%'],
                label:{
                    fontSize:10,
                labelLine:{
                    length:6,
                    length2:8,
                roseType: 'radius',
                data: [
                    { value: 20, name: "云南" },
                    { value: 26, name: "北京" },
                    { value: 24, name: "山东" },
                    { value: 25, name: "河北" },
                    { value: 20, name: "江苏" },
                    { value: 25, name: "浙江" },
                    { value: 30, name: "深圳" },
                    { value: 42, name: "广东" }
    myChart.setOption(option);
    window.addEventListener("resize",function(){
        myChart.resize();
})();




八、中国地图



【8.1】从社区中获取引入中国地图模块



使用这个航线地图。

geoCoordMap 是各城市的经纬度。

我们需要使用china.js文件来显示中国地图

【1】 引入china.js文件

【2】跟之前一样

如果出现这种中国地图加载不出来的情况,就检查,或者是替换为源文件,进行compare对比。


最后我发现是这里china.js 后面多了一个小括号,我找了好长时间哪,哎,排查了各种原因,javascript、Css的。



【8.2】定制中国地图


【1】去掉option中的 title和背景颜色。

【2】geo 中的item style.areaColor 改省份颜色

border color改颜色,十六进制变rbgb。

【3】geo中zoom放大中国地图


【8.3】约束屏幕缩放

//................................................
@media screen and (max-width: 1024px) {
  html {
    font-size: 42px !important;