前端整合ECharts

1、简介

ECharts是百度的一个项目,后来百度把Echart捐给apache,用于图表展示,提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。

官方网站:https://echarts.baidu.com/

2、基本使用

入门参考:官网->文档->教程->5分钟上手ECharts

(1)创建html页面:柱图.html

(2)引入ECharts

2

(3)定义图表区域

1

2

(4)渲染图表



  
    
    ECharts
    
    
  
  
    
    

27

3、折线图

实例参考:官网->实例->官方实例 https://echarts.baidu.com/examples/

折线图.html

option = {
  xAxis: {
    type: 'category',
    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
  },
  yAxis: {
    type: 'value'
  },
  series: [
    {
      data: [150, 230, 224, 218, 135, 147, 260],
      type: 'line'
    }
  ]
};

二、项目中集成ECharts

1、安装ECharts

npm install --save [email protected]

2、增加路由

src/router/index.js

在统计分析路由中增加子路由

{
    path: '/sta',
    component: Layout,
    redirect: '/sta/create',
    name: '统计分析',
    meta: { title: '统计分析', icon: 'example' },
    children: [
      {
        path: 'create',
        name: '生成数据',
        component: () => import('@/views/sta/create'),
        meta: { title: '生成数据', icon: 'table' }
      },
      {
        path: 'show',
        name: '图表显示',
        component: () => import('@/views/sta/show'),
        meta: { title: '图表显示', icon: 'tree' }
      }
    ]
  },

3、创建组件


61

三、完成后端业务

1、controller

 @GetMapping("getShowData/{type}/{begin}/{end}")
    public R getShowData(@PathVariable String type,@PathVariable String begin,@PathVariable String end){
        Map map = statisticsDailyService.getShowData(type,begin,end);
        return R.ok().data(map);
    }

2、service

接口

Map getShowData(String type, String begin, String end);

实现

 @Override
    public Map getShowData(String type, String begin, String end) {
        QueryWrapper queryWrapper = new QueryWrapper<>();
        queryWrapper.between("date_calculated",begin,end);
        queryWrapper.select("date_calculated",type);//查询需要的列,数据时间和类型
        List lists = baseMapper.selectList(queryWrapper);

        //返回的数据有两部分:date_calculated     和      所类型type
        //前端需要json数据,对于java代码的list集合,需要返回x、y轴两个list数据
        ArrayList dateList = new ArrayList<>();
        ArrayList typeList = new ArrayList<>();
        //遍历lists封装两个list集合
        for (StatisticsDaily list:lists){
            dateList.add(list.getDateCalculated());//封装日期

            if (type.equals("login_num")){//封装数量类型
                typeList.add(list.getLoginNum());
            }
            if (type.equals("register_num")){
                typeList.add(list.getRegisterNum());
            }
            if (type.equals("video_view_num")){
                typeList.add(list.getVideoViewNum());
            }
            if (type.equals("course_num")){
                typeList.add(list.getCourseNum());
            }
        }

        Map map = new HashMap<>();
        map.put("dateList",dateList);
        map.put("typeList",typeList);
        return map;
    }

四、前后端整合

1、创建api

import request from '@/utils/request'
export default {
  // 1 生成统计数据
  createStaData(day) {
    return request({
      url: '/staservice/sta/registerCount/' + day,
      method: 'post'
    })
  },
  // 2 获取统计数据
  getDataSta(searchObj) {
    return request({
      url: `/staservice/sta/showData/${searchObj.type}/${searchObj.begin}/${searchObj.end}`,
      method: 'get'
    })
  }
}

2、chart.vue中引入api模块

import sta from '@/api/sta'

3

3、修改initChartData方法

import echarts from 'echarts'
import staApi from '@/api/sta'

export default {
  data() {
    return {
      searchObj: {},
      btnDisabled: false,
      xData: [],
      yData: []
    }
  },
  methods: {
    showChart() {
      staApi.getDataSta(this.searchObj)
        .then(response => {
          console.log('*****************' + response)
          this.yData = response.data.numDataList
          this.xData = response.data.date_calculatedList

          // 调用下面生成图表的方法,改变值
          this.setChart()
        })
    },
    setChart() {
      // 基于准备好的dom,初始化echarts实例
      this.chart = echarts.init(document.getElementById('chart'))
      // console.log(this.chart)

      // 指定图表的配置项和数据
      var option = {
        title: {
          text: '数据统计'
        },
        tooltip: {
          trigger: 'axis'
        },
        dataZoom: [{
          show: true,
          height: 30,
          xAxisIndex: [
            0
          ],
          bottom: 30,
          start: 10,
          end: 80,
          handleIcon: 'path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z',
          handleSize: '110%',
          handleStyle: {
            color: '#d3dee5'

          },
          textStyle: {
            color: '#fff'
          },
          borderColor: '#90979c'
        },
        {
          type: 'inside',
          show: true,
          height: 15,
          start: 1,
          end: 35
        }],
        // x轴是类目轴(离散数据),必须通过data设置类目数据
       
    }
  }
}

4、修改options中的数据

1

xAxis: {
          type: 'category',
          data: this.xData
        },
        // y轴是数据轴(连续数据)
        yAxis: {
          type: 'value'
        },
        // 系列列表。每个系列通过 type 决定自己的图表类型
        series: [{
          // 系列中的数据内容数组
          data: this.yData,
          // 折线图
          type: 'line'
        }]
      }

      this.chart.setOption(option)

15

五、样式调整

参考配置手册:https://echarts.baidu.com/option.html#title

前端整合ECharts_第1张图片

 

你可能感兴趣的:(项目技术整合,echarts,前端,javascript)