• 基于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地址)

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

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

    3.引入需要用到的js包

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

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

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

    1.获取接口数据

    2.数据处理

    3.echarts图表展示

     1.获取接口数据

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

    1. // async 和 await 让异步变同步
    2. async function getdata(){
    3. // 设置带参请求
    4. let proms={
    5. "startTime":"2020-01-01 00:00:00",
    6. "endTime":"2020-12-30 00:00:00"
    7. }
    8. const alldata = await axios.post("http://localhost:8080/dataVisualization/**",proms).then((request)=>{
    9. return request.data.data
    10. },(error)=>
    11. {
    12. console.log(error)
    13. })
    14. culdata(alldata)
    15. }

     2.数据处理

    1. // 处理数据
    2. function culdata(data){
    3. let map = new Map()
    4. for(let i in data){
    5. let finalTotalAmount = data[i].finalTotalAmount //拿到金额
    6. let provinceName = data[i].provinceName // 拿到省份
    7. if(map.has(provinceName)){
    8. map.set(provinceName,map.get(provinceName)+finalTotalAmount)
    9. }else{
    10. map.set(provinceName,finalTotalAmount)
    11. }
    12. }
    13. // 类型转换并排序取前五
    14. let newdata = Array.from(map).sort((a,b)=>b[1]-a[1]).slice(0,5)
    15. console.log(newdata)
    16. let xdataa =[]
    17. let ydataa =[]
    18. // 分别取出数组中的数据
    19. for(let [k,v] of newdata){
    20. xdataa.push(k)
    21. ydataa.push(v)
    22. }
    23. xdata = xdataa
    24. ydata = ydataa
    25. // 调用绘图方法
    26. initEcharts()
    27. }

    3.echarts图表展示

    1. function initEcharts(){
    2. // 初始化dom元素
    3. let barone = echarts.init(document.getElementById("one"))
    4. barone.setOption({
    5. title:{
    6. text:"柱状图展示2020年消费前5省"
    7. },
    8. // 设置x轴
    9. xAxis:{
    10. type:"category",
    11. data: xdata
    12. },
    13. // 设置y轴
    14. yAxis:{
    15. type:"value"
    16. },
    17. // 设置配置项
    18. series:{
    19. name:"one",
    20. type:"bar",
    21. data:ydata
    22. }
    23. })
    24. }

    4.最终效果图 

     

    4.完整参考代码

    1. <script>
    2. import { onMounted } from 'vue'
    3. import axios from "../assets/axios"
    4. import echarts from "../assets/echarts"
    5. export default {
    6. setup(){
    7. let xdata = ""
    8. let ydata = ""
    9. // 获取数据
    10. async function getdata(){
    11. // 设置带参请求
    12. let proms={
    13. "startTime":"2020-01-01 00:00:00",
    14. "endTime":"2020-12-30 00:00:00"
    15. }
    16. const alldata = await axios.post("http://localhost:8080/dataVisualization/selectOrderInfo",proms).then((request)=>{
    17. return request.data.data
    18. },(error)=>
    19. {
    20. console.log(error)
    21. })
    22. culdata(alldata)
    23. }
    24. // finalTotalAmount :总金额
    25. // provinceName :省名称
    26. // 处理数据
    27. function culdata(data){
    28. let map = new Map()
    29. for(let i in data){
    30. let finalTotalAmount = data[i].finalTotalAmount //拿到金额
    31. let provinceName = data[i].provinceName // 拿到省份
    32. if(map.has(provinceName)){
    33. map.set(provinceName,map.get(provinceName)+finalTotalAmount)
    34. }else{
    35. map.set(provinceName,finalTotalAmount)
    36. }
    37. }
    38. // 类型转换并排序取前五
    39. let newdata = Array.from(map).sort((a,b)=>b[1]-a[1]).slice(0,5)
    40. console.log(newdata)
    41. let xdataa =[]
    42. let ydataa =[]
    43. // 分别取出数组中的数据
    44. for(let [k,v] of newdata){
    45. xdataa.push(k)
    46. ydataa.push(v)
    47. }
    48. xdata = xdataa
    49. ydata = ydataa
    50. // 调用绘图方法
    51. initEcharts()
    52. }
    53. // 绘图
    54. function initEcharts(){
    55. // 初始化dom元素
    56. let barone = echarts.init(document.getElementById("one"))
    57. barone.setOption({
    58. title:{
    59. text:"柱状图展示2020年消费前5省"
    60. },
    61. // 设置x轴
    62. xAxis:{
    63. type:"category",
    64. data: xdata
    65. },
    66. // 设置y轴
    67. yAxis:{
    68. type:"value"
    69. },
    70. // 设置配置项
    71. series:{
    72. name:"one",
    73. type:"bar",
    74. data:ydata
    75. }
    76. })
    77. console.log(ydata)
    78. console.log(xdata)
    79. }
    80. onMounted(()=>{
    81. getdata()
    82. })
    83. }
    84. }
    85. script>
    86. <style>
    87. .root {
    88. width: 700px;
    89. height: 400px;
    90. border: 1px solid red;
    91. float: right;
    92. }
    93. style>

  • 相关阅读:
    PyQt5桌面应用启动模板
    LSSViewTransformer 中每个类别的意思
    NEON快速入门
    java通过特定4个字符或者特定16个字符加密成特定字符组成的字符串及解密
    关于Pickle反序列化的研究总结和一道例题
    84.(cesium之家)cesium模型在地形上运动
    SqueezeNet 一维,二维网络复现 pytorch 小白易懂版
    互联网医院|互联网医院系统引领医疗科技新风潮
    在 MATLAB 中显示 3D 图像
    在线XML转TSV工具
  • 原文地址:https://blog.csdn.net/m0_69097184/article/details/133016725