基于vue3 的 Echarts图表展示 (操作全流程)(图文版)

目录

前言:

操作要求:

操作流程:

 一.创建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>

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Vue3中使用ECharts图表实现屏功能,首先需要在Vue组件中引入ECharts,并创建一个图表实例。接着,可以利用ECharts的API来控制图表的显示和隐藏,以及监听屏事件来实现屏功能。 以下是实现这一功能的基本步骤: 1. 安装ECharts依赖: 在项目中通过npm或yarn安装ECharts库。 ``` npm install echarts --save ``` 或者 ``` yarn add echarts ``` 2. 在Vue组件中引入ECharts并创建实例: ```javascript <script setup> import { onMounted, ref, watch } from 'vue'; import * as echarts from 'echarts'; const chartDom = ref(null); // 定义图表DOM的引用 let chartInstance = null; // 用来保存图表实例 onMounted(() => { chartInstance = echarts.init(chartDom.value); // 初始化图表实例 chartInstance.setOption(...); // 设置图表配置项 }); // 监听屏事件,实现屏功能 function toggleFullScreen() { if (!document.fullscreenElement) { chartDom.value.requestFullscreen().catch(err => { alert(`Error attempting to enable full-screen mode: ${err.message} (${err.name})`); }); } else { document.exitFullscreen(); } } </script> ``` 3. 在模板中使用引用的DOM元素: ```html <template> <div ref="chartDom" class="chart-dom"></div> <button @click="toggleFullScreen">屏</button> </template> <style> /* 图表样式 */ .chart-dom { width: 100%; height: 500px; } </style> ``` 4. 通过按钮或其他元素触发`toggleFullScreen`方法,即可进入或退出屏模式。 确保在使用时,将屏按钮或者控制元素与`toggleFullScreen`方法绑定,以便用户操作
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小辉懂编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值