当前位置: 首页 > news >正文

vue3+TS+vite中Echarts的安装与使用

概述

技术栈:Vue3+Ts+Vite+Echarts

简述:图文详解,教你如何在Vue项目中引入Echarts,封装Echarts组件,并实现常用Echats图列


文章目录

一,效果图

二,引入Echarts

        2.1安装Echarts

        2.2main.ts中引入

        2.3Echarts组件封装

三,使用

        3.1柱形图(为例)


文章正文

一效果图

静态效果

动态效果

    2.1安装Echarts

2.1.1 npm

npm i echarts --save

2.2.2 pnpm

pnpm i echarts -s

2.2main.ts中引入

//引入echarts
import * as echarts from 'echarts'
app.config.globalProperties.$echarts = echarts;

2.3Echarts组件封装

在/src/components/echartsComp.vue文件中写入以下代码


<template><div ref="myChartsRef" :style="{ height: height, width: width }" :option="option" />
</template><script setup lang="ts">
import { ECharts, EChartsOption, init } from 'echarts';
import { ref, watch, onMounted, onBeforeUnmount } from 'vue';// 定义props泛型
interface Props {width?: string;height?: string;option: EChartsOption;
}
const props = withDefaults(defineProps<Props>(), {width: '100%',height: '100%',option: () => ({})
});const myChartsRef = ref<HTMLDivElement>();
let myChart: ECharts;
// eslint-disable-next-line no-undef
let timer: string | number | NodeJS.Timeout | undefined;// 初始化echarts
const initChart = (): void => {if (myChart !== undefined) {myChart.dispose();}myChart = init(myChartsRef.value as HTMLDivElement);// 拿到option配置项,渲染echartsmyChart?.setOption(props.option, true);
};// 重新渲染echarts
const resizeChart = (): void => {timer = setTimeout(() => {if (myChart) {myChart.resize();}}, 50);
};
// 挂载
onMounted(() => {initChart();window.addEventListener('resize', resizeChart);
});
// 挂载前
onBeforeUnmount(() => {window.removeEventListener('resize', resizeChart);clearTimeout(timer);timer = 0;
});// 监听器
watch(props.option,() => {initChart();},{deep: true}
);
</script>

三,使用(以柱状图为例)

效果图

1,在需要的组件中引入该封装的组件

2,在需要的位置引入该组件

<template><div class="common-layout"><el-main><div :style="{ width: '100%', height: '100%' }"><Echarts :option="option" /></div></el-main></div>
</template><script setup lang="ts">
//引入ref实现响应式数据
import { reactive ,ref} from 'vue';
// 引入封装好的组件
import Echarts from '../components/echartsComp.vue';const option =  reactive({backgroundColor: '#fff',title:{text:'数据统计',align: 'center',},grid: {containLabel: true,bottom: '5%',top: '20%',left: '5%',right: '5%',},tooltip: {trigger: 'axis',axisPointer: {type: 'shadow',},},legend: {top: '10%',right: '40%',data: ['订单', '销售额'],itemWidth: 18,itemHeight: 18,itemGap: 30,textStyle: {fontSize: 10,color: 'black',padding: [0, 0, 0, 10],},},xAxis: {// name: "班级",triggerEvent: true,data: ['2023/05/17', '2023/05/18', '2023/03/19', '2023/05/19', '2023/05/20', '2023/05/21', '2023/05/22'],axisLabel: {show: true,fontSize: 14,color: '#C9D2FA',rotate: 10, // 设置旋转角度为30度align: 'right', verticalAlign: 'top',},axisLine: {show: false,lineStyle: {show: false,color: '#F3F3F3',width: 2,},},axisTick: {show: false,},},yAxis: [{// name: '单位:万',// type: 'value',// nameTextStyle: {//   color: '#444444',// },axisLabel: {interval: 0,show: true,fontSize: 18,color: '#C9D2FA',},axisLine: {show: false,// lineStyle: {//   color: "#F3F3F3",//   width: 2// }},axisTick: {show: false,},splitLine: {lineStyle: {type: 'dashed',color: '#3E4A82',},},},],series: [{name: '订单',type: 'bar',align: 'center',silent: true,itemStyle: {normal: {color: '#2F8FFF',},},label: {show: true,color: '#2F8FFF',fontSize: 14,position: 'top', // 显示位置,可选值有 'top', 'bottom', 'inside', 'outside'formatter: '{c}', // 标签内容格式器,这里表示显示数据值},data: [120, 75, 90, 102, 130, 75, 99],},{name: '销售额',type: 'bar',silent: true,itemStyle: {normal: {color: '#47B558',},},label: {show: true,color: '#47B558',fontSize: 14,position: 'top', // 显示位置,可选值有 'top', 'bottom', 'inside', 'outside'formatter: '{c}', // 标签内容格式器,这里表示显示数据值},data: [102, 130, 75, 99, 120, 75, 90],},],})
</script>

相关文章:

vue3+TS+vite中Echarts的安装与使用

概述 技术栈&#xff1a;Vue3TsViteEcharts 简述&#xff1a;图文详解&#xff0c;教你如何在Vue项目中引入Echarts&#xff0c;封装Echarts组件&#xff0c;并实现常用Echats图列 文章目录 一&#xff0c;效果图 二&#xff0c;引入Echarts 2.1安装Echarts 2.2main.ts中引…...

期末算法分析程序填空题

目录 5-1 最小生成树&#xff08;普里姆算法&#xff09; 5-2 快速排序&#xff08;分治法&#xff09; 输入样例&#xff1a; 输出样例&#xff1a; 5-3 归并排序(递归法) 输入样例&#xff1a; 输出样例&#xff1a; 5-4 求解编辑距离问题&#xff08;动态规划法&#xff09;…...

搭建android开发环境 android studio

1、环境介绍 在进行安卓开发时&#xff0c;需要掌握java&#xff0c;需要安卓SDK&#xff0c;需要一款编辑器&#xff0c;还需要软件的测试环境&#xff08;真机或虚拟机&#xff09;。 早起开发安卓app&#xff0c;使用的是eclipse加安卓SDK&#xff0c;需要自行搭建。 目前开…...

R语言6种将字符转成数字的方法,写在新年来临之际

咱们临床研究中&#xff0c;拿到数据后首先要对数据进行清洗&#xff0c;把数据变成咱们想要的格式&#xff0c;才能进行下一步分析&#xff0c;其中数据中的字符转成数字是个重要的内容&#xff0c;因为字符中常含有特殊符号&#xff0c;不利于分析&#xff0c;转成数字后才能…...

RocketMQ学习笔记(持续更新中......)

目录 1. 单机搭建 2. 测试RocketMQ 3. 集群搭建 4. 集群启动 5. RocketMQ-DashBoard搭建 6. 不同类型消息发送 1.同步消息 2. 异步消息发送 3. 单向发送消息 7. 消费消息 1. 单机搭建 1. 先从rocketmq官网下载二进制包&#xff0c;ftp上传至linux服务器&#xff0c…...

强化学习的基础概念

这节课会介绍一些基本的概念&#xff0c;并结合例子讲解。 在马尔科夫决策框架下介绍这些概念 本博客是基于西湖大学强化学习课程的视屏进行笔记的&#xff0c;这是链接&#xff1a; 课程链接 目录 强化学习的基本概念 state和state space Action和Action Space State transiti…...

excel怎么删除右边无限列(亲测有效)

excel怎么删除右边无限列&#xff08;亲测有效&#xff09; 网上很多只用第1步的&#xff0c;删除了根本没用&#xff0c;还是存在&#xff0c;但是隐藏后取消隐藏却是可以的。 找到右边要删除的列的第一个空白列&#xff0c;选中整个列按“ctrlshift>(向右的小箭头)”&am…...

STM32-笔记23-超声波传感器HC-SR04

一、简介 HC-SR04 工作参数&#xff1a; • 探测距离&#xff1a;2~600cm • 探测精度&#xff1a;0.1cm1% • 感应角度&#xff1a;<15 • 输出方式&#xff1a;GPIO • 工作电压&#xff1a;DC 3~5.5V • 工作电流&#xff1a;5.3mA • 工作温度&#xff1a;-40~85℃ 怎么…...

Linux | Ubuntu零基础安装学习cURL文件传输工具

目录 介绍 检查安装包 下载安装 手册 介绍 ‌cURL是一个利用URL语法在命令行下工作的文件传输工具&#xff0c;首次发行于1997年‌‌12。cURL支持多种协议&#xff0c;包括FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3…...

什么是 GPT?Transformer 工作原理的动画展示

大家读完觉得有意义记得关注和点赞&#xff01;&#xff01;&#xff01; 目录 1 图解 “Generative Pre-trained Transformer”&#xff08;GPT&#xff09; 1.1 Generative&#xff1a;生成式 1.1.1 可视化 1.1.2 生成式 vs. 判别式&#xff08;译注&#xff09; 1.2 Pr…...

SpringCloudAlibaba实战入门之路由网关Gateway过滤器(十三)

承接上篇,我们知道除了断言,还有一个重要的功能是过滤器,本节课我们就讲一下常见的网关过滤器及其一般使用。 一、Filter介绍 类似SpringMVC里面的的拦截器Interceptor,Servlet的过滤器。“pre”和“post”分别会在请求被执行前调用和被执行后调用,用来修改请求和响应信…...

电路仿真软件PSIM简介

在从事开关电源相关产品开发的工程师或者正在学习开关电源的学习者&#xff0c;常常会用到各种仿真软件进行电路的仿真&#xff0c;不仅可以快速验证电路参数&#xff0c;还能清楚知道各器件的工作状态。 现在的电路仿真软件很多&#xff0c;例如matlab、Multisim、Simplis&…...

C语言:调试的概念和调试器的选择

所谓调试&#xff08;Dubug&#xff09;&#xff0c;就是跟踪程序的运行过程&#xff0c;从而发现程序的逻辑错误&#xff08;思路错误&#xff09;&#xff0c;或者隐藏的缺陷&#xff08;Bug&#xff09;。 在调试的过程中&#xff0c;我们可以监控程序的每一个细节&#xff…...

25. C++继承 1 (继承的概念与基础使用, 继承的复制兼容规则,继承的作用域)

⭐上篇模板文章&#xff1a;24. C模板 2 (非类型模板参数&#xff0c;模板的特化与模板的分离编译)-CSDN博客 ⭐本篇代码&#xff1a;c学习 橘子真甜/c-learning-of-yzc - 码云 - 开源中国 (gitee.com) ⭐标⭐是比较重要的部分 目录 一. 继承的基础使用 1.1 继承的格式 1.2 …...

git 退出编辑模式

在使用 Git 时&#xff0c;有时需要进入编辑器来输入提交信息或进行其他编辑操作。不同的系统和配置可能会导致使用不同的编辑器。以下是几种常见 Git 编辑器的退出方法&#xff1a; ‌Vim 编辑器‌&#xff1a; ‌保存并退出‌&#xff1a; 按下 Esc 键退出编辑模式。输入 :w…...

内容营销与传统营销方式有哪些差别?

在互联网高度发达的当下&#xff0c;碎片化的信息接收方式&#xff0c;让用户对于营销信息拥有较高的敏感度。这一现状&#xff0c;也使得众多传统营销方式正在逐渐失效。想要稳定推广效率&#xff0c;内容营销是当下不少品牌的共同选择。接下来&#xff0c;就让我们来了解下内…...

EasyExcel(读取操作和填充操作)

文章目录 1.准备Read.xlsx&#xff08;具有两个sheet&#xff09;2.读取第一个sheet中的数据1.模板2.方法3.结果 3.读取所有sheet中的数据1.模板2.方法3.结果 EasyExcel填充1.简单填充1.准备 Fill01.xlsx2.无模版3.方法4.结果 2.列表填充1.准备 Fill02.xlsx2.模板3.方法4.结果 …...

【华为OD-E卷 - 机房布局 100分(python、java、c++、js、c)】

【华为OD-E卷 - 机房布局 100分&#xff08;python、java、c、js、c&#xff09;】 题目 小明正在规划一个大型数据中心机房&#xff0c;为了使得机柜上的机器都能正常满负荷工作&#xff0c;需要确保在每个机柜边上至少要有一个电箱。 为了简化题目&#xff0c;假设这个机房…...

【竞技宝】LOL:IG新赛季分组被质疑

北京时间2024年12月31日&#xff0c;今天已经2024年的最后一天&#xff0c;在进入一月之后&#xff0c;英雄联盟将迎来全新的2025赛季。而目前新赛季第一阶段的抽签结果已经全部出炉&#xff0c;其中人气最高的IG战队在本次抽签中抽到了“绝世好签”引来了网友们的质疑。 首先介…...

ChatBI来啦!NBAI 正式上线 NL2SQL 功能

NebulaAI 现已正式上线 NL2SQL 功能&#xff0c;免费开放使用&#xff01; 什么是 NL2SQL&#xff1f;NL2SQL 即通过自然语言交互&#xff0c;用户可以轻松查询、分析和管理数据库中的数据&#xff08;ChatBI&#xff09;&#xff0c;从此摆脱传统复杂的数据库操作。 欢迎免费…...

软件评测师基础知识专项刷题:软件测试过程

前言软考软件评测师备考之路&#xff0c;基础刷题必不可少。本文围绕软件测试过程模块整理经典习题 核心考点梳理&#xff0c;系列内容长期连载更新&#xff0c;慢慢积累、逐个突破&#xff0c;轻松夯实应试功底。考点测试过程模型1.组织级测试过程组织级测试过程用于开发和管…...

GD32单片机ADC实战:从传感器到上位机,一步步搞定50kg压力采集(附源码/原理图)

GD32单片机ADC实战&#xff1a;从传感器到上位机的50kg压力采集全流程解析 在嵌入式开发领域&#xff0c;ADC&#xff08;模数转换器&#xff09;的应用一直是连接物理世界与数字系统的关键桥梁。想象一下&#xff0c;当你需要精确测量一个50kg范围内的压力变化时&#xff0c;从…...

从天气预报到股票分析:用Python实战理解随机过程与概率论基础

从天气预报到股票分析&#xff1a;用Python实战理解随机过程与概率论基础 天气预报的准确率为何忽高忽低&#xff1f;股票价格的波动背后隐藏着怎样的数学规律&#xff1f;这些看似不相关的问题&#xff0c;其实都指向同一个核心概念——随机过程。作为概率论的延伸&#xff0c…...

Cosmos-Reason1-7B实际作品:实验室化学反应装置稳定性与泄漏风险评估

Cosmos-Reason1-7B实际作品&#xff1a;实验室化学反应装置稳定性与泄漏风险评估 1. 项目概述 Cosmos-Reason1-7B是NVIDIA开发的多模态物理推理视觉语言模型&#xff0c;专注于物理场景理解和安全风险评估。该模型能够分析图像和视频内容&#xff0c;结合物理常识进行链式思维…...

零售AI开发者必看:Ostrakon-VL-8B终端从部署到任务执行完整指南

零售AI开发者必看&#xff1a;Ostrakon-VL-8B终端从部署到任务执行完整指南 1. 项目概览&#xff1a;像素特工终端 Ostrakon-VL-8B是一款专为零售与餐饮场景优化的多模态大模型&#xff0c;我们将其封装成了一个充满游戏趣味的Web交互终端。与传统工业级UI不同&#xff0c;这…...

LeetCode:726. Number of Atoms - Python

问题描述&#xff1a; 给定一个化学式formula&#xff08;作为字符串&#xff09;&#xff0c;返回每种原子的数量。 原子总是以一个大写字母开始&#xff0c;接着跟随0个或任意个小写字母&#xff0c;表示原子的名字。 如果数量大于 1&#xff0c;原子后会跟着数字表示原子的…...

IMU与GPS融合定位:从Matlab到C++代码实现的EKF融合算法与组合导航松耦合融合详解...

IMU和GPS融合 ekf融合定位 从matlab到c代码实现 组合导航松耦合融合 34页超级详细的文档&#xff0c;对每个函数都进行了非常详细的讲解分析 玩过无人机或者自动驾驶的朋友肯定听过组合导航&#xff0c;这玩意儿说白了就是IMU和GPS的二人转。一个像躁动的少年&#xff08;IMU高…...

TIPI内存管理揭秘:10个技巧优化PHP性能与防止内存泄漏

TIPI内存管理揭秘&#xff1a;10个技巧优化PHP性能与防止内存泄漏 【免费下载链接】tipi Thinking In PHP Internals, An open book on PHP Internals 项目地址: https://gitcode.com/gh_mirrors/ti/tipi PHP作为世界上最流行的服务器端脚本语言之一&#xff0c;其内存管…...

程序实现多参数联动判断,单一参数异常不报警,多参数契合才报警,零误报。

一、实际应用场景描述某高校《智能仪器》综合实验项目中&#xff0c;有一套电机运行状态监测系统&#xff1a;- 监测参数&#xff1a;- 电流&#xff08;A&#xff09;- 振动&#xff08;mm/s&#xff09;- 温度&#xff08;℃&#xff09;现场现象&#xff1a;- 电机启动时&am…...

OpenClaw+千问3.5-9B:个人知识库的自动构建与更新

OpenClaw千问3.5-9B&#xff1a;个人知识库的自动构建与更新 1. 为什么需要自动化知识管理 作为一个长期与技术文档打交道的开发者&#xff0c;我发现自己面临一个典型困境&#xff1a;每天接触大量有价值的信息——技术博客、论文片段、代码示例、会议记录——但它们最终都散…...