基于vue3 的 Echarts图表展示(任务一:用柱状图展示消费额最高的省份)(操作全流程)(图文版)

2023-09-19 10:56:19

目录

前言:

操作要求:

操作流程:

 一.创建vue项目

  1.在vscode上创建vue脚手架工程

二.配置运行环境 

           2.配置axios(用于访问接口) 和引入echarts包

  3.引入需要用到的js包

三.开始实践做题(最后附有完整代码)

1.获取接口数据

2.数据处理

3.echarts图表展示

4.最终效果图 

4.完整参考代码


前言:

这篇是一个基于vue3上的echarts图表展示文章,无论你有没有基础 ,只要看这篇文章你都可以学会!加油哦~

操作要求:

编写Vue工程代码,根据接口,用柱状图展示2020年消费额最高的5个省份,同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴至对应报告中

操作流程:

 一.创建vue项目

  1.在vscode上创建vue脚手架工程

       1.1 由node去下拉vuecli脚手架(未安装node的请查看文章:安装npm

     ​​

        1.2 创建vue项目命令:vue create test3

     ​​                   ​​

               然后用vscode打开该vue工程

二.配置运行环境 

      2.配置axios(用于访问接口) 和引入echarts包

         2.1 首先先打开vscode终端(快捷键Ctrl+`),引入axios包和Echarts包

                如果你没有这两个包,可以私信我领取哦!

           

         2.2 配置代理服务器

             在vuecli的工程脚手架项目中找到vue.config.js文件,有则打开,无则新   

 ​​

2.3 在vue.config.js中  配置代理服务器,代码如下:(注意配置的ip地址)

module.exports = {
    
    devServer: {
      proxy: 'http://192.168.23.xx:xxxx'  //配置代理服务器(域名和端口为被请求方的)
    }
  }

 注意:配置完后必须重新启动vuecli脚手架服务才会生效!!!

3.引入需要用到的js包

 3.1.新建一个vue组件,引入axios和echarts

三.开始实践做题(最后附有完整代码)

题目分析: 根据最上方题目要求,可以分析出,主要的代码步骤是:

1.获取接口数据

2.数据处理

3.echarts图表展示

 1.获取接口数据

此处涉及到异步变同步问题,可以参考这篇文章:异步->同步接口请求

// async 和 await 让异步变同步
async  function getdata(){
        // 设置带参请求
          let proms={
            "startTime":"2020-01-01 00:00:00",
            "endTime":"2020-12-30 00:00:00"
                }
         const alldata = await    axios.post("http://localhost:8080/dataVisualization/**",proms).then((request)=>{
          return request.data.data
           },(error)=>
           {
                console.log(error)
           })
           culdata(alldata)
        }

 2.数据处理

  // 处理数据
        function culdata(data){
            let map = new Map()
            for(let i in data){
                let finalTotalAmount = data[i].finalTotalAmount   //拿到金额
                let provinceName = data[i].provinceName  // 拿到省份

                if(map.has(provinceName)){
                    map.set(provinceName,map.get(provinceName)+finalTotalAmount)
                }else{
                    map.set(provinceName,finalTotalAmount)
                }
            }

        // 类型转换并排序取前五
      let newdata =    Array.from(map).sort((a,b)=>b[1]-a[1]).slice(0,5)
       console.log(newdata) 
        
      let    xdataa =[]
      let   ydataa =[]
    //   分别取出数组中的数据
       for(let [k,v] of newdata){
        xdataa.push(k)
        ydataa.push(v)
       }
      xdata = xdataa
      ydata = ydataa
    //   调用绘图方法
       initEcharts()
        }

3.echarts图表展示

 function initEcharts(){
            // 初始化dom元素
         let barone = echarts.init(document.getElementById("one"))
         barone.setOption({
            title:{
                text:"柱状图展示2020年消费前5省"
            },
            // 设置x轴
            xAxis:{
                type:"category",
                data: xdata
            },
            // 设置y轴
            yAxis:{
                type:"value"
            },
            // 设置配置项
            series:{
                name:"one",
                type:"bar",
                data:ydata
            }
         })
}

4.最终效果图 

 

4.完整参考代码

<template>
  <div id="one" class="root">123</div>
</template>

<script>
import { onMounted } from 'vue'
import axios from "../assets/axios"
import echarts from "../assets/echarts"
export default {

    setup(){
        let xdata = ""
        let ydata = ""

        // 获取数据
       async  function getdata(){
        // 设置带参请求
          let proms={
            "startTime":"2020-01-01 00:00:00",
            "endTime":"2020-12-30 00:00:00"
                }
         const alldata = await    axios.post("http://localhost:8080/dataVisualization/selectOrderInfo",proms).then((request)=>{
          return request.data.data
           },(error)=>
           {
                console.log(error)
           })
           culdata(alldata)
        }
        
	// finalTotalAmount :总金额
	// provinceName :省名称
	
        // 处理数据
        function culdata(data){
            let map = new Map()
            for(let i in data){
                let finalTotalAmount = data[i].finalTotalAmount   //拿到金额
                let provinceName = data[i].provinceName  // 拿到省份

                if(map.has(provinceName)){
                    map.set(provinceName,map.get(provinceName)+finalTotalAmount)
                }else{
                    map.set(provinceName,finalTotalAmount)
                }
            }

        // 类型转换并排序取前五
      let newdata =    Array.from(map).sort((a,b)=>b[1]-a[1]).slice(0,5)
       console.log(newdata) 
        
      let    xdataa =[]
      let   ydataa =[]
    //   分别取出数组中的数据
       for(let [k,v] of newdata){
        xdataa.push(k)
        ydataa.push(v)
       }
      xdata = xdataa
      ydata = ydataa
    //   调用绘图方法
       initEcharts()
        }

// 绘图
        function initEcharts(){
            // 初始化dom元素
         let barone = echarts.init(document.getElementById("one"))
         barone.setOption({
            title:{
                text:"柱状图展示2020年消费前5省"
            },
            // 设置x轴
            xAxis:{
                type:"category",
                data: xdata
            },
            // 设置y轴
            yAxis:{
                type:"value"
            },
            // 设置配置项
            series:{
                name:"one",
                type:"bar",
                data:ydata
            }
         })
        console.log(ydata)
        console.log(xdata)
        }

        onMounted(()=>{
            getdata()
        })
    }
}
</script>

<style>
.root {
  width: 700px;
  height: 400px;
  border: 1px solid red;
  float: right;
}
</style>

更多推荐

服务器数据恢复-LINUX操作系统下各文件系统误删除/格式化数据的恢复方案

服务器数据恢复环境:基于EXT2/EXT3/EXT4/Reiserfs/Xfs文件系统的Linux操作系统。服务器故障:LINUX操作系统下误删除/格式化数据。服务器数据恢复过程:1、首先会检测服务器是否存在硬件故障,如果检测出硬件故障,交由硬件工程师处理。2、检测故障表现是否与用户描述相同。3、以只读方式对故障服务器

Apollo使用和安装

项目管理部门添加使用json格式编辑即可用户管理添加用户创建项目对项目进行管理授权在创建应用的时候,授权在项目页面中授权用户只能看见自己负责的项目管理员可以看到所有项目删除项目先输入AppId查询应用点击删除应用,即可删除配置管理新增配置对新添的和修改的配置项需要发布,才能生效客户端读取配置项在启动的时候,指定AppI

案例丨如何提升可视化分析能力?听听这两家企业怎么说

神策分析2.5版本正式发布经营分析能力以来,已有不少客户接入使用,并充分实现了可视化分析能力的提升。本文将为大家分享两家客户的真实反馈,希望能够帮助您进一步了解神策经营分析的能力。案例一:神策数据助力美篇打造公司级“数据可视化平台”“我们希望接入神策数据之后,能够更清晰、便捷、完整、及时地查看和分析平台内容消费情况、社

拓世法宝|短视频带货风潮,数字人教育书单号成销售黑马

Z世代的爸妈,正在搞一种很新的育儿方式。“躺平式”带娃、“用魔法打败魔法”等新时代育儿方式频频登上热搜,作为与互联网共同成长起来的一代,Z世代父母们更热衷于通过网络攻略获得和分享知识和经验,更注重个性的养育方式,并且伴随整体消费水平的提高,科学和精致化育儿已经逐渐成为现下带娃的主流趋势。Z世代父母们喜欢在短视频平台上购

spring boot 整合多数据源

多数据源产生的场景一般情况下,不会有多数据源这样的场景出现,但老项目或者特殊需求的项目,可能会有这样的场景同一个应用需要访问两个数据库不用数据库中间件的读写分离注入数据源选择的时机声明两个数据源实例,在getConnection的时候根据业务的不同,注入不同数据源的连接环境准备准备sql脚本,建立两个库,这里mysql

java使用正则提取数据

一、正则提取文本指定数据需要对一个json结构做数据的提取,提取label和value的值,组成新的结构,西瓜:0、苹果:1、草莓:2原始json字符串如下格式[{"label":"西瓜","value":0},{"label":"苹果","value":1},{"label":"草莓","value":2},{"la

LeetCode2.两数相加

一看完题,我的想法是先算出这两个链表表示的数,然后相加,然后把这个数一位一位的分配给第三个数组,这种方法应该很简单但是要遍历三次数组,于是我就想直接一遍遍历,两个链表同时往后面遍历,把这两个数的和给第三个链表,如果有进位,下一个数加1;但是写完之后出现的问题,因为我的循环是先创建下一个链表然后,指针指向这个链表,然后再

AI绘图软件Stable Diffusion 安装和使用之二controlnet插件

本期说一下StableDiffusion非常有名的插件controlnet。同上一篇一样,我们安装b站大佬秋葉aaaki(有的网友戏称他/她是赛博佛祖)的stablediffusion4.2整合包。解压缩以后,打开启动器,见下图,界面比早期版本更好看了。​编辑​启动器打开以后,安装controlnet插件填写网址:ht

【文生图系列】如何在Stable Diffusion Webui中使用ControlNet

文章目录ControlNetStableDiffusion+ControlNet安装ControlNet插件bug例子展示参考ControlNetControlNet是一个神经网络结构,通过添加额外的条件控制扩散模型。给定任务条件,ControlNet能够提升已训练好的图像扩散模型。对于任意一个神经网络块,如下图所示,

【面试经典150 | 数组】跳跃游戏 II

文章目录写在前面Tag题目来源题目解读解题思路方法一:贪心写在最后写在前面本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更……专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾与总结,文章结构大致如下,部分内容会有增删:Tag:介绍本题牵涉到的知识点、数据结构;题目来源

软件测试/测试开发丨利用人工智能ChatGPT编写晋级报告

点此获取更多相关资料简介不管是在哪个公司,如果想要有一个长足的发展,想要获得晋升,除了平时的表现与积累,还有就是晋级答辩与晋级报告。不同的岗位,比如设计、产品、研发、测试,都有不同的答辩通道和晋级标准。一篇好的晋级报告,可以完整地体现一个人过去的工作贡献,以及未来的工作展望。而晋级报告的编写,也可以借助ChatGPT轻

热文推荐