Vue.js ECharts使用

打印 上一主题 下一主题

主题 692|帖子 692|积分 2076

一、介绍

        ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求。ECharts 提供了丰富的图表类型和交互能力,使用户能够通过简朴的设置生成各种各样的图表,包括但不限于折线图、柱状图、散点图、饼图、雷达图、地图等。安装方式:


  • CDN: https://cdn.staticfile.net/echarts/4.3.0/echarts.min.js
  • NPM:npm install echarts --save
二、使用echarts展示每日网站访问量

        通过查询登录日记表展示为如下样式:

        前端vue代码,一共有两个分别是每日访问量的折线图和性别人数的柱状图。访问量请求后端数据,性别则使用了假数据。
  1. <script lang="ts" setup>
  2. import {onMounted, ref} from "vue";
  3. import * as echarts from "echarts";
  4. import api from "@/axios";
  5. const loginLogChartDiv = ref();
  6. const genderChartDiv = ref();
  7. onMounted(() => {
  8.   initLoginLogECharDiv(); // 网站访问量
  9.   initGenderChart(); // 员工性别对比图
  10. })
  11. function initLoginLogECharDiv() {
  12.   const myChart = echarts.init(loginLogChartDiv.value);// 图标初始化
  13.   let dateList = [];
  14.   let countList = [];
  15.   api({url: '/selLoginLogChart'}).then(resp => {
  16.     dateList = resp.data.dateList;
  17.     countList = resp.data.countList.map(Number);
  18.     // 需要在后端获取数据之后绘制图表
  19.     myChart.setOption({
  20.       title: {
  21.         text: '网站访问量'
  22.       },
  23.       tooltip: {},
  24.       xAxis: {
  25.         data: dateList
  26.       },
  27.       yAxis: {},
  28.       series: [{
  29.         name: '访问量',
  30.         type: 'line',
  31.         data: countList
  32.       }]
  33.     });
  34.   });
  35. }
  36. function initGenderChart() {
  37.   const myChart = echarts.init(genderChartDiv.value);// 图标初始化
  38. // 绘制图表
  39.   myChart.setOption({
  40.     title: {
  41.       text: '员工性别对比图'
  42.     },
  43.     tooltip: {},
  44.     xAxis: {
  45.       data: ['男', '女']
  46.     },
  47.     yAxis: {},
  48.     series: [{
  49.       name: '人数',
  50.       type: 'bar',
  51.       data: [5, 20]
  52.     }]
  53.   });
  54. }
  55. </script>
  56. <template>
  57.   <el-row>
  58.     <el-col :span="24">
  59.       <div ref="loginLogChartDiv" :style="{ float: 'left', width: '100%', height: '350px' }"></div>
  60.     </el-col>
  61.   </el-row>
  62.   <el-row>
  63.     <el-col :span="12">
  64.       <div ref="genderChartDiv" :style="{ float: 'left', width: '100%', height: '350px' }"></div>
  65.     </el-col>
  66.     <el-col :span="12">
  67.     </el-col>
  68.   </el-row>
  69. </template>
  70. <style scoped>
  71. </style>
复制代码
        业务层逻辑处置处罚
  1. @Override
  2.     public Map<String, List<String>> selLoginLogChart(String s) {
  3.         List<Map<String, Object>> list = logoMapper.selLoginLogChart(s);
  4.         // 查询结果是Date类型,需要格式化
  5.         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
  6.         Map<String, List<String>> resultMap = new HashMap<>();
  7.         List<String> dateList = new ArrayList<>();
  8.         List<String> countList = new ArrayList<>();
  9.         for (Map<String, Object> map : list) {
  10.             dateList.add(dateFormat.format(map.get("date")));
  11.             countList.add(map.get("count") + "");
  12.         }
  13.         resultMap.put("dateList", dateList);
  14.         resultMap.put("countList", countList);
  15.         return resultMap;
  16.     }
复制代码
        sql语句,由于日期是年月日时分秒,所以须要使用DATE()提取出年月日举行分组查询。
  1. <select id="selLoginLogChart" resultType="java.util.Map">
  2.         select DATE(logintime) as date, count(*) as count
  3.         from loginlog
  4.         where logintime >= #{s}
  5.         group by date
  6.     </select>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

尚未崩坏

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表