14. Vue 3 中使用 ECharts 实现仪表盘

devtools/2025/1/22 15:44:56/

引言

仪表盘是一种常见的数据可视化组件,广泛应用于实时数据监控、设备状态显示等场景。在前端开发中,ECharts 是一款强大的图表库,能够轻松地帮助我们实现复杂的图表效果。本文将介绍如何在 Vue 3 项目中,利用 ECharts 来实现一个简单而实用的仪表盘。

项目准备

在开始之前,我们需要确保以下几点:

  • 已安装 Vue 3 项目环境。
  • 已安装 ECharts 库。

如果你还没有安装 ECharts,可以通过 npm 安装:

javascript">npm install echarts --save

完整代码

javascript"><!--* @Author: 彭麒* @Date: 2025/1/21* @Email: 1062470959@qq.com* @Description: 此源码版权归吉檀迦俐所有,可供学习和借鉴或商用。-->
<template><div class="w-full justify-start flex h-[180px] items-center pl-10 bg-[#222939]"><BackButton @click="goBack"/></div><div class="font-bold text-[24px] bg-[#222939] text-white">在Vue3中使用Echarts实现仪表盘</div><div class="dashboard-container"><div ref="chartRef" class="gauges-chart"></div></div>
</template><script setup lang="ts">
import { ref, onMounted, onUnmounted } from 'vue'
import * as echarts from 'echarts'
import BackButton from "@/views/components/BackButton.vue";
import router from "@/router";
const goBack = () => {setTimeout(() => {router.push('/Echarts')}, 1000)
}
const chartRef = ref<HTMLElement | null>(null)
let chart: echarts.ECharts | null = nullconst highlight = '#03b7c9'const demoData = [{ name: '电压', value: 220, unit: 'V', pos: ['16.6%', '25%'], range: [0, 400] },{ name: '电流', value: 32, unit: 'A', pos: ['49.8%', '25%'], range: [0, 60] },{ name: '功率因数', value: 0.9, pos: ['83%', '25%'], range: [0.1, 1.0], splitNum: 9 },{ name: '有功功率', value: 6.34, unit: 'kW', pos: ['16.6%', '75%'], range: [0, 50] },{ name: '有功电能', value: 6.28, unit: 'kWh', pos: ['49.8%', '75%'], range: [0, 50] },{ name: '电网频率', value: 50, unit: 'Hz', pos: ['83%', '75%'], range: [0, 100] }
]const initChart = () => {if (!chartRef.value) returnchart = echarts.init(chartRef.value)const option = {backgroundColor: '#222939',series: demoData.map(item => [// 外围刻度{type: 'gauge',center: item.pos,radius: '33.33%',splitNumber: item.splitNum || 10,min: item.range[0],max: item.range[1],startAngle: 225,endAngle: -45,axisLine: {show: true,lineStyle: {width: 2,shadowBlur: 0,color: [[1, highlight]]}},axisTick: {show: true,lineStyle: {color: highlight,width: 1},length: -5,splitNumber: 10},splitLine: {show: true,length: -14,lineStyle: {color: highlight}},axisLabel: {distance: -20,textStyle: {color: highlight,fontSize: '14',fontWeight: 'bold'}},pointer: {show: 0},detail: {show: 0}},// 内侧指针、数值显示{name: item.name,type: 'gauge',center: item.pos,radius: '30.33%',startAngle: 225,endAngle: -45,min: item.range[0],max: item.range[1],axisLine: {show: true,lineStyle: {width: 16,color: [[1, 'rgba(255,255,255,.1)']]}},axisTick: {show: 0},splitLine: {show: 0},axisLabel: {show: 0},pointer: {show: true,length: '105%'},detail: {show: true,offsetCenter: [0, '100%'],textStyle: {fontSize: 20,color: '#fff'},formatter: ['{value} ' + (item.unit || ''),'{name|' + item.name + '}'].join('\n'),rich: {name: {fontSize: 14,lineHeight: 30,color: '#ddd'}}},itemStyle: {normal: {color: highlight}},data: [{value: item.value}]}]).flat()}chart.setOption(option)
}const handleResize = () => {chart?.resize()
}onMounted(() => {initChart()window.addEventListener('resize', handleResize)
})onUnmounted(() => {chart?.dispose()window.removeEventListener('resize', handleResize)
})
</script><style scoped>
.dashboard-container {width: 100%;height: 80%;background-color: #222939;display: flex;align-items: center;justify-content: center;
}.gauges-chart {width: 100%;height: 100%;min-height: 600px;
}@media screen and (max-width: 768px) {.gauges-chart {min-height: 400px;}
}
</style>

运行效果

当你将这些代码集成到你的 Vue 3 项目中并运行时,你将看到一个包含多个仪表盘的界面,每个仪表盘显示不同的数据(如电压、电流、功率因数等)。每个仪表盘的数据是通过 ECharts 的 gauge 图表类型来呈现的,同时也使用了颜色和样式定制,以增强视觉效果。

总结

通过本文的示例,你已经学会了如何在 Vue 3 中使用 ECharts 实现一个简单的仪表盘。我们结合了 Vue 3 的 Composition API 和 ECharts 提供的 gauge 图表类型,展示了如何在实际项目中创建动态、可交互的仪表盘。你可以根据需要扩展功能,例如定期更新数据、添加动画效果等。

希望这篇文章对你有所帮助!如果你有任何问题或建议,欢迎在评论区留言。


你可以将这篇文章发布到 CSDN 或其他平台。如果有任何细节需要修改或补充,


http://www.ppmy.cn/devtools/152634.html

相关文章

搭建一个基于Spring Boot的书籍学习平台

搭建一个基于Spring Boot的书籍学习平台可以涵盖多个功能模块&#xff0c;例如用户管理、书籍管理、学习进度跟踪、笔记管理、评论和评分等。以下是一个简化的步骤指南&#xff0c;帮助你快速搭建一个基础的书籍学习平台。 — 1. 项目初始化 使用 Spring Initializr 生成一个…

【Python项目】主观题自动阅卷系统

【Python项目】主观题自动阅卷系统 技术简介&#xff1a;采用Python技术、B/S框架、MYSQL数据库等实现。 系统简介&#xff1a;本系统以自动阅卷主观题为主&#xff0c;其功能首先有五大模块&#xff0c;包括系统首页、在线考试功能、试卷管理、成绩管理、用户管理。 背景&…

频繁刷新网页会对服务器造成哪些影响?

当用户在进行浏览网页的过程中频繁刷新页面时&#xff0c;浏览器会向服务器发送请求&#xff0c;服务器会对该请求进行处理并返回到相应的页面内容中&#xff0c;所以频繁刷新网页会对服务器造成影响&#xff0c;有可能会出现以下问题&#xff1a; 用户每次刷新网页都会向服务器…

初识Go语言

什么是Go语言&#xff1f; 基础语法&#xff1a; 变量&#xff1a;Go是强变量类型的语言。 常量和变量&#xff1a; if else语句&#xff1a; 循环&#xff1a; switch case 语法&#xff1a; 数组&#xff1a; 切片&#xff1a; Map: range: 函数&#xff1a; 指针&#xff…

Docker配置国内镜像源

访问docker hub需要科学上网 在 Docker 中配置镜像地址&#xff08;即镜像加速器&#xff09;可以显著提升拉取镜像的速度&#xff0c;尤其是在国内访问 Docker Hub 时。以下是详细的配置方法&#xff1a; 1. 配置镜像加速器 Docker 支持通过修改配置文件来添加镜像加速器地址…

初始SpringBoot:详解特性和结构

??JAVA码农探花&#xff1a; ?? 推荐专栏&#xff1a;《SSM笔记》《SpringBoot笔记》 ??学无止境&#xff0c;不骄不躁&#xff0c;知行合一 目录 前言 一、SpringBoot项目结构 1.启动类的位置 2.pom文件 start parent 打包 二、依赖管理特性 三、自动配置特性…

【STL】list 双向循环链表的使用介绍

STL中list容器的详细使用说明 一.list的文档介绍二. list的构造函数三.list中的访问与遍历操作四.list中的修改操作4.1 list中的各种修改操作4.2 list的迭代器失效问题 五.list中的其他一些操作 一.list的文档介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器…

Linux下内存泄漏排查

在Linux系统下&#xff0c;针对C项目的内存泄漏排查&#xff0c;可以采用多种方法和工具。以下是对这些方法和工具的总结&#xff1a; 一、基础工具和命令 top和htop&#xff1a; top命令可以实时监控系统资源使用情况&#xff0c;包括内存使用情况。通过运行top命令并按下M键…