• ECharts数据可视化项目【6】


    Echarts-介绍

    常见的数据可视化库:

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

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

    大白话:

    官网地址:https://echarts.apache.org/examples/zh/index.html
    在这里插入图片描述
    注意步骤2中的这个盒子必须要有宽高,有大小。

    Echarts-基础配置

    这是要求同学们知道以下配置每个模块的主要作用干什么的就可以了

    需要了解的主要配置:series xAxis yAxis grid tooltip title legend color

    • series

      • 系列列表。每个系列通过 type 决定自己的图表类型
      • 大白话:图标数据,指定什么类型的图标,可以多个图表重叠。
    • xAxis:直角坐标系 grid 中的 x 轴

      • boundaryGap: 坐标轴两边留白策略 true,这时候刻度只是作为分隔线,标签和数据点都会在两个刻度之间的带(band)中间。
    • yAxis:直角坐标系 grid 中的 y 轴

    • grid:直角坐标系内绘图网格。

    • title:标题组件

    • tooltip:提示框组件

    • legend:图例组件

    • color:调色盘颜色列表

      数据堆叠,同个类目轴上系列配置相同的stack值后 后一个系列的值会在前一个系列的值上相加。

    举个例子:

    option = {
        // color设置我们线条的颜色 注意后面是个数组
        color: ['pink', 'red', 'green', 'skyblue'],
        // 设置图表的标题
        title: {
            text: '折线图堆叠123'
        },
        // 图表的提示框组件 
        tooltip: {
            // 触发方式
            trigger: 'axis'
        },
        // 图例组件
        legend: {
           // series里面有了 name值则 legend里面的data可以删掉
        },
        // 网格配置  **grid可以控制线形图 柱状图 图表大小**
        grid: {
            left: '3%',
            right: '4%',
            bottom: '3%',
            // 是否显示刻度标签 如果是true 就显示 否则反之
            containLabel: true
        },
        // 工具箱组件  可以另存为图片等功能
        toolbox: {
            feature: {
                saveAsImage: {}
            }
        },
        // 设置x轴的相关配置
        xAxis: {
        //category是坐标轴类型,category它是类目轴,适用于离散的类目数据
            type: 'category',
            // 是否让我们的线条和坐标轴有缝隙
            boundaryGap: false,
            data: ['星期一', '周二', '周三', '周四', '周五', '周六', '周日']
        },
         // 设置y轴的相关配置
        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]
            }
        ]
    };
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67

    在这里插入图片描述

    项目中柱状图图表(两大步骤)

    • 官网找到类似实例, 适当分析,并且引入到HTML页面中
    • 根据需求定制图表

    引入echart.js文件

    <script src="js/echarts.min.js"></script>
    
    • 1

    因为接下来会做很多关于js的操作,所以我们直接在js文件夹中新建index.js,再将其导入到index.html中去

     <script src="js/index.js"></script>
    
    • 1

    又因为我们的这个项目图表很多,一共有6个图表,再加上一个大地图,一共7个图,都需要初始化,都需要配置,都需要option,为了防止变量的命名污染,所以我们可以利用立即执行函数(为了让防止变量污染,减少命名冲突,里面的变量都是局部变量)

    1. 引入到html页面中
    // 柱状图1模块
    (function() {
      // 实例化对象
      let myChart = echarts.init(document.querySelector(".bar .chart"));
      // 指定配置和数据
      let 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]
          }
        ]
      };
    
      // 把配置给实例对象
      myChart.setOption(option);
    })();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    1. 根据需求定制

      • 修改图表柱形颜色 #2f89cf

      • 修改图表大小 top 为 10px bottom 为 4% grid决定我们的柱状图的大小

    color: ["#2f89cf"],
    grid: {
      left: "0%",
      top: "10px",
      right: "0%",
      bottom: "4%",
      containLabel: true
    },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    X轴相关设置 xAxis

    • 文本颜色设置为 rgba(255,255,255,.6) 字体大小为 12px
    • X轴线的样式 不显示
    // 设置x轴标签文字样式
      // x轴的文字颜色和大小
            axisLabel: {
              color: "rgba(255,255,255,.6)",
              fontSize: "12"
            },
       //  x轴样式不显示
       axisLine: {
           show: false
           // 如果想要设置单独的线条样式 
           // lineStyle: {
           //    color: "rgba(255,255,255,.1)",
           //    width: 1,
           //    type: "solid"
          }
       }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    Y 轴相关定制

    • 文本颜色设置为 rgba(255,255,255,.6) 字体大小为 12px
    • Y 轴线条样式 更改为 1像素的 rgba(255,255,255,.1) 边框
    • 分隔线的颜色修饰为 1像素的 rgba(255,255,255,.1)
    // y 轴文字标签样式
    axisLabel: {
          color: "rgba(255,255,255,.6)",
           fontSize: "12"
    },
     // y轴线条样式
     axisLine: {
          lineStyle: {
             color: "rgba(255,255,255,.1)",
             // width: 1,
             // type: "solid"
          }
    5232},
     // y 轴分隔线样式
    splitLine: {
        lineStyle: {
           color: "rgba(255,255,255,.1)"
         }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    修改柱形为圆角以及柱子宽度 series 里面设置

    series: [
          {
            name: "直接访问",
            type: "bar",
            // 修改柱子宽度
            barWidth: "35%",
            data: [10, 52, 200, 334, 390, 330, 220],
            itemStyle: {
              // 修改柱子圆角
              barBorderRadius: 5
            }
          }
        ]
      };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    更换对应数据

    // x轴中更换data数据
     data: [ "旅游行业","教育培训", "游戏行业", "医疗行业", "电商行业", "社交行业", "金融行业" ],
    // series 更换数据
     data: [200, 300, 300, 900, 1500, 1200, 600]
    
    • 1
    • 2
    • 3
    • 4

    让图表跟随屏幕自适应

     window.addEventListener("resize", function() {
        myChart.resize();
      });
    
    • 1
    • 2
    • 3

    关于第一个图表的所有代码为:

    // 柱状图模块1
    (function () {
      // 1.实例化对象
      var myChart = echarts.init(document.querySelector(".bar .chart"));
      // 2.指定配置项和数据
      var option = {
        color: ['#2f89cf'],
        // 提示框组件
        tooltip: {
          trigger: 'axis',
          axisPointer: { // 坐标轴指示器,坐标轴触发有效
            type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
          }
        },
        // 修改图表位置大小
        grid: {
          left: '0%',
          top: '10px',
          right: '0%',
          bottom: '4%',
          containLabel: true
        },
        // x轴相关配置
        xAxis: [{
          type: 'category',
          data: ["旅游行业", "教育培训", "游戏行业", "医疗行业", "电商行业", "社交行业", "金融行业"],
          axisTick: {
            alignWithLabel: true
          },
          // 修改刻度标签,相关样式
          axisLabel: {
            color: "rgba(255,255,255,0.8)",
            fontSize: 10
          },
          // x轴样式不显示
          axisLine: {
            show: false
          }
        }],
        // y轴相关配置
        yAxis: [{
          type: 'value',
          // 修改刻度标签,相关样式
          axisLabel: {
            color: "rgba(255,255,255,0.6)",
            fontSize: 12
          },
          // y轴样式修改
          axisLine: {
            lineStyle: {
              color: "rgba(255,255,255,0.6)",
              width: 2
            }
          },
          // y轴分割线的颜色
          splitLine: {
            lineStyle: {
              color: "rgba(255,255,255,0.1)"
            }
          }
        }],
        // 系列列表配置
        series: [{
          name: '直接访问',
          type: 'bar',
          barWidth: '35%',
          // ajax传动态数据
          data: [200, 300, 300, 900, 1500, 1200, 600],
          itemStyle: {
            // 修改柱子圆角
            barBorderRadius: 5
          }
        }]
      };
      // 3.把配置项给实例对象
      myChart.setOption(option);
    
      // 4.让图表随屏幕自适应
      window.addEventListener('resize', function () {
        myChart.resize();
      })
    })();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82

    实现的效果为:
    在这里插入图片描述

  • 相关阅读:
    图像处理入门:从平滑到面积测量的C++实践指南
    【Spring(四)】Spring基于注解的配置方式
    URL和URI
    HCIP-三、VRRP+BFD
    【ROS2原理17】ROS 2 安全飞地
    MySQL之创建高性能的索引(五)
    自动编码器(AE)生成Mnist手写数字集,基于tensorflow和keras实现
    无人机新手防炸飞行技巧
    srpingboot security demo
    【数据结构与算法】之深入解析“安排邮筒”的求解思路与算法示例
  • 原文地址:https://blog.csdn.net/qq_40992225/article/details/126699182