Vue2中使用Echarts
1.安装echarts
在项目根目录下,使用npm或yarn安装ECharts:
npm install echarts --save
或者
yarn add echarts
2.在相应的vue页面中引入echarts
<script>
import * as echarts from "echarts";
</script>
3.代码解析
<template><div ref="chart" style="width: 600px; height: 400px;"></div>
</template><script>
import * as echarts from 'echarts';export default {name: 'MyChart',mounted() {this.initChart();},methods: {initChart() {// 获取DOM元素const chartDom = this.$refs.chart;// 初始化ECharts实例const myChart = echarts.init(chartDom);// 配置图表选项const option = {title: {text: 'ECharts 入门示例'},tooltip: {},xAxis: {data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']},yAxis: {},series: [{name: '销量',type: 'bar',data: [5, 20, 36, 10, 10, 20]}]};// 使用配置项显示图表myChart.setOption(option);}}
};
</script>
1.定义了一个用于渲染图表的DOM元素。
<div ref="chart" style="width: 600px; height: 400px;"></div>
2.生命周期钩子用于在组件挂载后初始化图表。
mounted() {this.initChart();},
3.initChart()
方法用于初始化ECharts实例并设置图表配置。
获取DOM元素
const chartDom = this.$refs.chart;
-
this.$refs.chart
是 Vue 中通过ref
属性获取 DOM 元素的方式。 -
在模板中,
<div ref="chart"></div>
定义了一个 DOM 元素,this.$refs.chart
就是对这个元素的引用。 -
这个 DOM 元素将作为 ECharts 图表的容器。
初始化 ECharts 实例
const myChart = echarts.init(chartDom);
-
echarts.init(chartDom)
是 ECharts 的初始化方法,它会将chartDom
元素初始化为一个 ECharts 实例。 -
myChart
是 ECharts 实例的引用,后续可以通过它来操作图表(例如更新数据、调整配置等)。
配置图表选项
const option = {title: {text: 'ECharts 入门示例'},tooltip: {},xAxis: {data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']},yAxis: {},series: [{name: '销量',type: 'bar',data: [5, 20, 36, 10, 10, 20]}]
};
-
option
是 ECharts 的配置对象,用于定义图表的外观和行为。 -
title
:图表的标题,text
属性设置标题内容。 -
tooltip
:提示框组件,当鼠标悬停在图表上时会显示提示信息。 -
xAxis
:X 轴配置,data
属性设置 X 轴的数据项(这里是商品的名称)。 -
yAxis
:Y 轴配置,这里没有额外配置,ECharts 会自动根据数据生成 Y 轴。 -
series
:系列列表,每个系列代表一组数据。-
name
:系列的名称,会显示在图例和提示框中。 -
type
:图表的类型,这里是柱状图(bar
)。 -
data
:系列的数据,对应 Y 轴的值。
-
使用配置项显示图表
myChart.setOption(option);
-
myChart.setOption(option)
将配置对象option
应用到 ECharts 实例中,从而渲染出图表。 -
这一步是必须的,否则图表不会显示。
4.后端获取数据如何在echarts中使用
<template><div ref="chart" style="width: 600px; height: 400px;"></div>
</template><script>
import * as echarts from 'echarts';
import axios from 'axios';export default {name: 'MyChart',data() {return {myChart: null, // 用于保存 ECharts 实例xAxisData: [], // X 轴数据yAxisData: [] // Y 轴数据};},mounted() {this.initChart();this.fetchData(); // 组件挂载后获取数据},methods: {// 初始化图表initChart() {const chartDom = this.$refs.chart;this.myChart = echarts.init(chartDom);},// 从后端获取数据async fetchData() {try {// 发送请求获取数据const response = await axios.get('https://api.example.com/chart-data');const data = response.data;// 更新 X 轴和 Y 轴数据this.xAxisData = data.xAxis;this.yAxisData = data.yAxis;// 更新图表this.updateChart();} catch (error) {console.error('Failed to fetch data:', error);}},// 更新图表updateChart() {if (this.myChart) {const option = {title: {text: '动态数据示例'},tooltip: {},xAxis: {data: this.xAxisData // 使用从后端获取的 X 轴数据},yAxis: {},series: [{name: '销量',type: 'bar',data: this.yAxisData // 使用从后端获取的 Y 轴数据}]};// 使用配置项显示图表this.myChart.setOption(option);}}},beforeDestroy() {// 销毁 ECharts 实例if (this.myChart) {this.myChart.dispose();}}
};
</script>
数据定义
data() {return {myChart: null, // 用于保存 ECharts 实例xAxisData: [], // X 轴数据yAxisData: [] // Y 轴数据};
}
-
myChart
:用于保存 ECharts 实例,方便后续操作。 -
xAxisData
和yAxisData
:分别用于存储从后端获取的 X 轴和 Y 轴数据。
初始化图表
initChart() {const chartDom = this.$refs.chart;this.myChart = echarts.init(chartDom);
}
-
在
mounted
钩子中调用initChart
,初始化 ECharts 实例。
获取后端数据
async fetchData() {try {const response = await axios.get('https://api.example.com/chart-data');const data = response.data;// 更新 X 轴和 Y 轴数据this.xAxisData = data.xAxis;this.yAxisData = data.yAxis;// 更新图表this.updateChart();} catch (error) {console.error('Failed to fetch data:', error);}
}
-
使用
axios.get
发送 HTTP 请求,获取后端数据。 -
假设后端返回的数据格式为:
{"xAxis": ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"],"yAxis": [5, 20, 36, 10, 10, 20] }
-
将获取到的数据赋值给
xAxisData
和yAxisData
,然后调用updateChart
更新图表。
更新图表
updateChart() {if (this.myChart) {const option = {title: {text: '动态数据示例'},tooltip: {},xAxis: {data: this.xAxisData // 使用从后端获取的 X 轴数据},yAxis: {},series: [{name: '销量',type: 'bar',data: this.yAxisData // 使用从后端获取的 Y 轴数据}]};// 使用配置项显示图表this.myChart.setOption(option);}
}
-
根据
xAxisData
和yAxisData
动态生成图表的配置项option
。 -
调用
this.myChart.setOption(option)
更新图表。
销毁 ECharts 实例
beforeDestroy() {if (this.myChart) {this.myChart.dispose();}
}
-
在组件销毁前,调用
dispose
方法销毁 ECharts 实例,避免内存泄漏。
相关文章:
Vue2中使用Echarts
1.安装echarts 在项目根目录下,使用npm或yarn安装ECharts: npm install echarts --save 或者 yarn add echarts 2.在相应的vue页面中引入echarts <script> import * as echarts from "echarts"; </script> 3.代码解析 <…...

AI赋能服装零售:商品计划智能化,化危机为转机
在服装零售这片竞争激烈的战场上,每一个细微的决策都可能成为品牌兴衰的关键。当市场波动、消费者口味变化、供应链挑战接踵而至时,许多品牌往往将危机归咎于外部环境。然而,真相往往更为深刻——“危机不是外部的,而是你的商品计…...
Spring AI ectorStore
Spring AI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中扮演着至关重要的角色。以下是对Spring AI VectorStore的详细解析: 一、VectorStore的基本概念 定义:VectorStore特别适用于处理那些经过嵌入…...
zig 安装,Hello World 示例
1. 安装 Zig 首先,你需要在你的计算机上安装 Zig 编译器。你可以从 Zig 官方网站 下载适合你操作系统的版本。 安装完成后,你可以在终端中运行以下命令来检查 Zig 是否安装成功: zig version如果一切正常,它会显示 Zig 的版本信…...
龙蜥Linux系统部署docker21.1.3版本
龙蜥系统配置docker环境 更新yum源 更新软件源中的包。 yum update安装底层工具 yum install -y yum-utils device-mapper-persistent-data lvm2添加阿里云仓库 # 添加阿里云的docker镜像仓库 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/c…...

django解决跨域问题
# 1.安装django-cors-headers 库 pip install django-cors-headers -i https://pypi.tuna.tsinghua.edu.cn/simple2.添加到应用程序中 添加 corsheaders 到你的 INSTALLED_APPS 设置中: INSTALLED_APPS [...corsheaders,... ]3.添加中间件 MIDDLEWARE [...cor…...

【蓝桥杯选拔赛真题60】C++寻宝石 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解
目录 C++寻宝石 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 五、运行结果 六、考点分析 七、推荐资料 C++寻宝石 第十四届蓝桥杯青少年创意编程大赛C++选拔赛真题 一、题目要求 1、编程实现 有N(1<N<100)个盒子排成一排,每个盒子都放…...

Git 从入门到精通
一、环境配置 下载地址:https://git-scm.com/downloads/ 二、用户配置 找到git bash git --version 查看当前版本 git config --global user.name szhipeng625 设置用户名 git config --global user.email szhipeng625gmail.com 设置邮箱 git config --global …...

vue3使用vue3-video-play播放m3u8视频
1.安装vue3-video-play npm install vue3-video-play --save2.在组件中使用 import vue3-video-play/dist/style.css; import VideoPlay from vue3-video-play;// 视频配置项 const options reactive({src: https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8, //视频源mute…...
使用API有效率地管理Dynadot域名,为文件夹中的域名统一设置电子邮件转发
关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…...

Java虚拟机(Java Virtual Machine,JVM)
一、Java 虚拟机 Java 虚拟机(Java Virtual Machine, JVM)是运行 Java 字节码的虚拟机。它是Java平台的核心组件之一,使得Java程序具有 一次编写,到处运行(Write Once, Run Anywhere) 的特性。 JVM 有针对…...

[免费]微信小程序(高校就业)招聘系统(Springboot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序(高校就业)招聘系统(Springboot后端Vue管理端),分享下哈。 项目视频演示 【免费】微信小程序(高校就业)招聘系统(Springboot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项目介绍…...

TCP Analysis Flags 之 TCP Retransmission
前言 默认情况下,Wireshark 的 TCP 解析器会跟踪每个 TCP 会话的状态,并在检测到问题或潜在问题时提供额外的信息。在第一次打开捕获文件时,会对每个 TCP 数据包进行一次分析,数据包按照它们在数据包列表中出现的顺序进行处理。可…...

#Phi-4:微软 14B 参数开源模型,性能匹敌 OpenAI GPT-4o-mini,现已登陆 Ollama
Phi-4:微软 14B 参数开源模型,性能匹敌 OpenAI GPT-4o-mini,现已登陆 Ollama 一、Phi-4 模型概述 (一)模型参数与规模 Phi-4 是微软推出的一款小型语言模型,拥有 140 亿参数。虽然参数量相对较小…...
JSON头文件调用
除了传统的读写操作,现在流行的json文件读取保存,还是非常方便的. 头文件放在源代码中,在调用处添加引用路径 #include “…/ConsoleApplication1/include/json.hpp” using json nlohmann::json; 数据结构例子: // 声明Person类 class Person { public: std::string name; i…...

Swagger学习⑭——@Contact注解
介绍 Contact 是 Swagger/OpenAPI 3.0 注解中的一个注解,用于定义 API 文档中的联系信息。通过 Contact 注解,你可以指定 API 维护者的联系方式,例如电子邮件、URL 或名称等。 源代码 package io.swagger.v3.oas.annotations.info;import …...
如何监听Vuex数据的变化?
使用watch方法监听Vuex state的变化: // 在 Vue 组件中 this.$store.watch((state) > state.someState,(newValue, oldValue) > {console.log(someState changed from, oldValue, to, newValue);} );使用subscribe方法监听mutation的变化: // 在…...

Redis 优化秒杀(异步秒杀)
目录 为什么需要异步秒杀 异步优化的核心逻辑是什么? 阻塞队列的特点是什么? Lua脚本在这里的作用是什么? 异步调用创建订单的具体逻辑是什么? 为什么要用代理对象proxy调用createVoucherOrder方法? 对于代码的详细…...
前端中常用的单位度量(px,rpx,rem,em,vw,vh)+图片自适应
文章目录 前端中常用的单位度量vw/vh 的场景应用px/rem/em 之间的转换关系项目中的rem 应用根元素 font-size 设置为16px 的应用惯例自适应之图片应用1. 使用 max-width 和 max-height2. 使用 object-fit 属性3. 使用 background-image 模拟图片展示 前端中常用的单位度量 px&…...

STM32之一种双通路CAN总线消息备份冗余处理方法(十三)
STM32F407 系列文章 - Dual-CANBus-ProMethod(十三) 目录 前言 一、现状分析 二、解决思路 1.应用场景网络结构图 2.数据发送流程 3.数据接收流程 4.用到的模块 1.CAN网络速率及时间片分配 2.CAN网络消息ID组成 3.设备节点定义 4.数据格式说明…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...

Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...