Vue+echart 展示后端获取的数据实现

yizhihongxing

下面我将详细讲解“Vue+echart 展示后端获取的数据实现”的完整攻略。首先我们需要明确几个概念:

  • Vue:一款轻量级的前端框架,可以实现响应式的数据绑定和组件化开发;
  • Echarts:一款强大的可视化图表库,支持多种图表类型和交互方式,可以方便地展示数据;
  • 后端:在本文中,代表数据源,可以是数据库、文件等。

下面我们按照以下步骤来实现:

1. 前端页面及数据请求

使用 Vue 开发前端页面,用 axios 库发起请求获取后端数据。通常情况下,我们会使用 Vue 的组件化开发方式来实现这个过程,这里就以单文件组件为例:

<template>
  <div>
    <el-button @click="getData">获取数据</el-button>
    <div>
      <el-select v-model="selected" placeholder="请选择">
        <el-option v-for="item in selectData" :key="item.value" :label="item.label" :value="item.value"></el-option>
      </el-select>
      <el-button @click="drawChart">绘制图表</el-button>
    </div>
    <div ref="myChart" :style="{width: '500px', height: '500px'}"></div>
  </div>
</template>

<script>
import axios from 'axios'
import * as echarts from 'echarts'
export default {
  data () {
    return {
      chartData: null,
      selectData: [],
      selected: ''
    }
  },
  methods: {
    getData () {
      axios.get('/api/data')
        .then(res => {
          this.chartData = res.data
          Object.keys(this.chartData).forEach(key => {
            this.selectData.push({ value: key, label: key })
          })
        })
        .catch(error => {
          console.log(error)
        })
    },
    drawChart () {
      if (this.selected === '') {
        return
      }
      this.myChart.clear()
      const option = {
        title: { text: this.selected },
        tooltip: {},
        xAxis: {
          data: Object.keys(this.chartData[this.selected].x)
        },
        yAxis: {},
        series: [
          {
            name: '数据',
            type: 'bar',
            data: Object.values(this.chartData[this.selected].y)
          }
        ]
      }
      this.myChart.setOption(option)
    }
  },
  mounted () {
    this.myChart = echarts.init(this.$refs.myChart)
  }
}
</script>

在这段代码中,我们定义了一个名为 ChartData.vue 的单文件组件,包含了一个按钮用来获取数据、一个下拉框用来选择要展示的数据,一个按钮用来绘制图表,以及一个用来渲染图表的 div 元素。在组件的 data 中定义了三个变量,chartData 代表从后端获取的数据,selectData 代表下拉框中的选项,selected 代表当前选中的选项。组件中的 getData 方法使用 axios 库发起请求,将获取到的数据保存在 chartData 变量中,并根据数据动态生成下拉框中的选项。drawChart 方法根据选中的选项绘制图表。在组件的 mounted 钩子中初始化 echarts 实例,并通过 ref 获取渲染图表的 div 元素。

2. 后端数据处理

在后端处理数据,将数据转化为前端能够方便处理的格式。以 Flask 为例,实现一个数据接口 /api/data

import random
from flask import Flask, jsonify

app = Flask(__name__)

data = {
    '数据1': {
        'x': {
            '1月': '1月',
            '2月': '2月',
            '3月': '3月',
            '4月': '4月',
            '5月': '5月',
            '6月': '6月',
            '7月': '7月',
            '8月': '8月',
            '9月': '9月',
            '10月': '10月',
            '11月': '11月',
            '12月': '12月'
        },
        'y': {
            '1月': random.randint(10, 100),
            '2月': random.randint(10, 100),
            '3月': random.randint(10, 100),
            '4月': random.randint(10, 100),
            '5月': random.randint(10, 100),
            '6月': random.randint(10, 100),
            '7月': random.randint(10, 100),
            '8月': random.randint(10, 100),
            '9月': random.randint(10, 100),
            '10月': random.randint(10, 100),
            '11月': random.randint(10, 100),
            '12月': random.randint(10, 100)
        }
    },
    '数据2': {
        'x': {
            '学科1': '学科1',
            '学科2': '学科2',
            '学科3': '学科3',
            '学科4': '学科4',
            '学科5': '学科5',
            '学科6': '学科6',
            '学科7': '学科7',
            '学科8': '学科8',
            '学科9': '学科9',
            '学科10': '学科10'
        },
        'y': {
            '学科1': random.randint(10, 100),
            '学科2': random.randint(10, 100),
            '学科3': random.randint(10, 100),
            '学科4': random.randint(10, 100),
            '学科5': random.randint(10, 100),
            '学科6': random.randint(10, 100),
            '学科7': random.randint(10, 100),
            '学科8': random.randint(10, 100),
            '学科9': random.randint(10, 100),
            '学科10': random.randint(10, 100)
        }
    }
}

@app.route('/api/data')
def get_data():
    return jsonify(data)

这里我们使用 Flask 创建了一个名为 app 的应用,定义了一个变量 data,表示要展示的数据,数据中包含了两个数据集,每个数据集拥有一个 x 轴和一个 y 轴,x 轴表示数据的分类,y 轴表示数据的值,每个分类对应一个数值。注意数据可以是从数据库中查询的结果,也可以是从文件中读取的内容。在请求 /api/data 时,使用 Flask 的 jsonify 方法将数据序列化为 JSON 格式并返回给前端。

3. 运行应用,查看效果

将前后端代码放在同一个项目中(或者分别启动两个项目并在跨域的情况下获取数据),启动应用,在浏览器中访问前端页面,点击“获取数据”按钮即可从后端获取数据并动态生成下拉框选项,选择一个选项并点击“绘制图表”按钮,可以看到 echarts 绘制的图表。

以上是“Vue+echart 展示后端获取的数据实现”的完整攻略,具体示例如上所示,欢迎参考。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue+echart 展示后端获取的数据实现 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • vue+elementUI配置表格的列显示与隐藏

    下面是关于“vue+elementUI配置表格的列显示与隐藏”的完整攻略。 步骤一:安装必要的依赖 首先,需要安装element-ui和vue-resize组件依赖,可以使用npm安装,具体命令如下: npm install element-ui vue-resize –save 其中,element-ui用于构建表格组件,vue-resize用于监听窗口…

    Vue 2023年5月28日
    00
  • vue深度优先遍历多层数组对象方式(相当于多棵树、三级树)

    如何进行vue深度优先遍历多层数组对象方式 (相当于多棵树、三级树)?下面我们将提供一份完整的攻略。 首先需要明确的是,在vue中,深度遍历多层对象和树的方法都是使用递归的方式完成。以下是深度遍历多层对象的一般实现方法: function deepTraversal(obj, callback) { for (let key in obj) { if (ob…

    Vue 2023年5月27日
    00
  • 浅谈vue中所有的封装方式总结

    浅谈Vue中所有的封装方式总结 Vue是一个流行的JavaScript库,用于构建用户界面。Vue提供了许多不同的封装方式,让开发者能够更好地在应用中组织和重用代码。在本文中,我们将总结Vue中的所有封装方式,并提供两个示例来说明如何使用它们。 1. 通过Mixin封装 Mixin提供了一种将公共代码和功能组合到组件中的方式。可以在多个组件之间共享Mixin…

    Vue 2023年5月28日
    00
  • 详解vue-cli 脚手架项目-package.json

    下面是详解vue-cli 脚手架项目-package.json的完整攻略。 什么是vue-cli脚手架项目-package.json 在使用Vue.js构建前端项目时,我们通常使用Vue CLI来快速创建项目的基础结构。Vue CLI通过自动生成基础代码、提供开发服务器、打包和部署等功能,减少了我们在项目搭建和管理过程中的工作量。在Vue CLI生成的项目中…

    Vue 2023年5月28日
    00
  • Vue Element-ui表单校验规则实现

    下面我将为您介绍如何使用Vue中的Element-ui表单校验规则。 1. 简介 在表单相关的开发中,输入框、文本框等输入控件的校验是必不可少的。Vue支持使用Element-ui提供的校验规则方法,可以轻松实现表单验证的效果。而Element-ui提供的校验规则包括以下几个方面: required: 必填项校验 pattern: 模式匹配规则校验(正则校验…

    Vue 2023年5月28日
    00
  • js如何操作localstorage

    操作LocalStorage是通过Javascript提供的API来进行的。LocalStorage提供了一些非常有用的方法,可以帮助我们完成一些复杂的任务。下面我来详细讲解一下如何通过JS操作Localstorage。 什么是LocalStorage? LocalStorage是HTML5标准提供的一种本地存储机制,提供了类似cookie的API,但是比C…

    Vue 2023年5月28日
    00
  • 详解Vue之事件处理

    详解Vue之事件处理 Vue.js 是一款流行的前端框架,它的事件处理能力非常强大。本文将详细讲解 Vue.js 中的事件处理,包括如何使用 v-on 指令绑定事件、如何传递参数和修饰符、以及如何使用自定义事件等。 绑定事件 在 Vue.js 中,我们可以使用 v-on 指令来绑定事件。省略了 v-on 直接写 @ 符号,作用相同,下面的几个示例中直接使用 …

    Vue 2023年5月27日
    00
  • Vue3实现全局loading指令的示例详解

    下面是关于“Vue3实现全局loading指令的示例详解”的完整攻略。 简介 在Vue3中,可以使用自定义指令来给DOM元素绑定一些额外的行为,比如全局loading指令。 实现步骤 第一步:创建指令 在Vue3中,我们可以使用app.directive()方法来创建一个指令。下面是一个简单的指令示例,实现了在元素上添加一个loading图标的功能: imp…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部