【Echarts 实战指南】解锁动态历史曲线之谜

在工作中,大家是否曾遇到过这样一种需求呢?需获取设备最近 10 分钟的历史数据。设备实时数据每 2 秒推送一次,且要把历史数据曲线变成动态变化的状态。倘若设备最近 10 分钟的历史数据为 20 个点,那么现在每 2 秒就要将最前面的点删除,同时推送最新的数据。一旦数据发生变化,便加载历史曲线函数,从而达成动态效果。
在这里插入图片描述

template

<template><a-card shadow="none" style="margin:20px 0 0 20px" title=""><div class="item" ref="chartContainer6"></div></a-card>
</template>

script

<script setup>import * as echarts from 'echarts'import { ref, onMounted, onUnmounted } from 'vue'let chartContainer6 = ref(null)//假设这是最近 10 分钟的历史数据,实际项目中请求接口const data1 = ref([20, 25, 24, 21, 30, 26, 35, 30, 31, 36, 28, 25, 31, 36, 19, 22, 50, 40, 25, 30]);const data2 = ref([40, 56, 42, 65, 45, 48, 42, 52, 45, 50, 48, 45, 51, 56, 49, 52, 50, 60, 49, 51]);const time = ref(['17:00:00', '17:00:02', '17:00:04', '17:00:06', '17:00:08', '17:00:10', '17:00:12', '17:00:14', '17:00:16', '17:00:18','17:00:20', '17:00:22', '17:00:24', '17:00:26', '17:00:28', '17:00:30', '17:00:32', '17:00:34', '17:00:36', '17:00:38']);//当前时间:时分秒function getCurrentTime() {const now = new Date();let hours = now.getHours();let minutes = now.getMinutes();let seconds = now.getSeconds();hours = hours < 10 ? '0' + hours : hours;minutes = minutes < 10 ? '0' + minutes : minutes;seconds = seconds < 10 ? '0' + seconds : seconds;return `${hours}:${minutes}:${seconds}`;}function getRandomArbitrary(min, max) {return Math.random() * (max - min) + min;}// 生成随机数并推入数组function pushRandomData() {// 删除数组的第一个元素if (data1.value.length > 0) data1.value.shift();if (data2.value.length > 0) data2.value.shift();if (time.value.length > 0) time.value.shift();// 添加新的随机数值const randomValue1 = Math.floor(getRandomArbitrary(20, 40));const randomValue2 = Math.floor(getRandomArbitrary(40, 60));data1.value.push(randomValue1);data2.value.push(randomValue2);time.value.push(getCurrentTime());}function realtimeCurve() {const chart = echarts.init(chartContainer6.value);const options = {tooltip: {show: true,trigger: 'axis'},legend: {show: true,type: "scroll",bottom: 0,textStyle: {color: '#fff'}},grid: {top: '10%',left: '5%',right: '2%',bottom: '15%',containLabel: true},xAxis: [{type: 'category',boundaryGap: true,axisLabel: {textStyle: {color: '#11EEE1',padding: 6,fontSize: 10},formatter: function (data) {return data}},splitLine: {show: false,lineStyle: {color: "#11EEE1"},},axisLine: {show: true,textStyle: {color: '#11EEE1',},},axisTick: {show: true,textStyle: {color: '#11EEE1',},},data: time.value}],yAxis: [{name: '',splitLine: {show: false,lineStyle: {color: "#11EEE1"},},axisLine: {show: true,textStyle: {color: '#11EEE1',},},axisTick: {show: true,textStyle: {color: '#11EEE1',},},axisLabel: {show: true,textStyle: {color: '#11EEE1',padding: 6,},formatter: function (value) {if (value === 0) {return value}return value}},}],series: [{name: 'High Press',type: 'line',symbol: 'circle',showAllSymbol: true,symbolSize: 0,smooth: true,lineStyle: {normal: {width: 2,color: "rgba(33,150,243, 1)",}},itemStyle: {color: "rgba(33,150,243, 1)",borderWidth: 2},tooltip: {show: true},data: data1.value}, {name: 'Low Press 1',type: 'line',symbol: 'circle',showAllSymbol: true,symbolSize: 0,smooth: true,lineStyle: {normal: {width: 2,color: "rgba(76,175,80, 1)",}},itemStyle: {color: "rgba(76,175,80, 1)",borderWidth: 2},tooltip: {show: true},data: data2.value}]}chart.setOption(options);
}
// 设置定时器,每2秒执行一次
intervalId = setInterval(() => {pushRandomData(); // 当前时间realtimeCurve(); // 历史曲线
}, 2000);
onMounted(() => {realtimeCurve()
});
onUnmounted(() => {if (intervalId) {clearInterval(intervalId);}
});
</script>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/56959.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕业设计Python深度学习房价预测 房源可视化 房源爬虫 二手房可视化 二手房爬虫 递归决策树模型 机器学习 深度学习 大数据毕业设计

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 房地产是促进我国经济持续增…

车辆管理新篇章:SpringBoot技术解析

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

电感的学习

电感是表示电路中电流变化对电压影响的物理量&#xff0c;常用符号 LLL 表示。电感的基本公式可以从其定义和基本特性中得出&#xff0c;主要包括以下几个方面&#xff1a; 1. 电感的定义 2. 电感能量存储 3. 自感与互感 自感&#xff1a;电感器自身的电感&#xff0c;表示电…

Kubescape 扫描和修复容器镜像漏洞

引言 在当今的云原生环境中,容器安全至关重要。容器镜像可能存在各种安全漏洞,如果不加以识别和修复,可能会被攻击者利用,给系统带来严重的安全风险。本文将介绍如何使用 Kubescape 这一强大的开源 Kubernetes 安全平台来扫描和修复容器镜像中的漏洞。 Kubescape 简介 Kubes…

stata基本操作

文章目录 数据导入及存储变量的标签、审视数据变量的标签审视数据数据删除数据排序 画图直方图使用帮助文件散点图 统计分析描述性分析频数分析相关分析 生成新变量、计算器、终止命令生成新变量设置哑变量修改变量名更改变量内容调用命令和终止命令 日志命令库更新、学习资源 …

Shell脚本:模块引用

Shell脚本&#xff1a;模块引用 目录 引言Shell脚本模块化的重要性基本的模块引用方法 3.1 使用source命令 3.2 使用点号&#xff08;.&#xff09;操作符创建和组织模块 4.1 函数模块 4.2 变量模块 4.3 常量模块高级模块引用技巧 5.1 相对路径和绝对路径 5.2 动态模块加载 5…

从零开始学PHP之helloworld

前言 每一门编程语言的第一个程序就是输出hell world&#xff08;别杠&#xff0c;杠就是你对&#xff09; 开始 上一篇讲完了开发环境的安装&#xff0c;这次讲编辑器的安装&#xff0c;顺带完成上一篇的作业&#xff08;输出hello world&#xff09; 安装PHPstorm 我用的…

基于SpringBoot+Vue的旅游服务平台【提供源码+答辩PPT+参考文档+项目部署】

&#x1f4a5; ① 前言&#xff1a;这两年毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的JavaWeb项目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff01; ❗② 如何解决这类问题&#xff1f; 让我们能够顺利通过毕业&#xff0c;我也一直在不断思考、…

用自己的数据集复现YOLOv5

yolov5已经出了很多版本了&#xff0c;这里我以目前最新的版本为例&#xff0c;先在官网下载源码&#xff1a;GitHub - ultralytics/yolov5: YOLOv5 &#x1f680; in PyTorch > ONNX > CoreML > TFLite 然后下载预训练模型&#xff0c;需要哪个就点击哪个模型就行&am…

AI 编译器学习笔记之六 -- 基础知识、概念

1、激活函数&#xff1a; 深度学习—激活函数详解&#xff08;Sigmoid、tanh、ReLU、ReLU6及变体P-R-Leaky、ELU、SELU、Swish、Mish、Maxout、hard-sigmoid、hard-swish&#xff09;-CSDN博客 2、ModuleList和Sequential的区别&#xff1a;ModuleList是定义了一个迭代循环体…

机器视觉入门基础相关概念一 ——单目相机模型

机器视觉入门基础相关概念 相机模型 引言介绍&#xff1a;如果只是希望获取图像上的一些信息&#xff08;例如特征提取、拟合等&#xff09;&#xff0c;那么我们不会对三维空间中相机的位置有所要求。但如果希望通过二维的图像去理解三维空间中摄像机的信息&#xff0c;或者是…

【Qt】控件——Qt按钮类控件、常用的按钮类控件、按钮类控件的使用、Push Button、Radio Button、Check Box

文章目录 Qt3. Qt按钮类控件Push ButtonRadio ButtonCheck Box Qt 3. Qt按钮类控件 Push Button 使用 QPushButton 表示一个按钮。当点击按钮时可以触发各种事件。QPushButton 继承自 QAbstractButton。这个类是一个抽象类。是其他按钮的父类。 PushButton和QAbstractButton的…

阿里云linux系统扩容分区

系统扩容需要进行三步操作&#xff1a;①服务器扩容云盘 ② 扩容分区 ③ 扩容文件系统 参考&#xff1a;https://help.aliyun.com/zh/ecs/user-guide/extend-the-partitions-and-file-systems-of-disks-on-a-linux-instance?spma2c4g.11186623.0.0.6a094862DCMnnM#de3365e1d4l…

部署项目最新教程

​ 3.3安装mysql 运行代码&#xff1a; yum install mysql 运行代码&#xff1a; yum install mysql-server 中间还是一样要输入y然后回车 运行代码&#xff1a; yum install mysql-devel 好&#xff0c;经过上面三步&#xff0c;mysql安装成功&#xff0c;现在启动mysql…

国内如何下载谷歌浏览器(chrome浏览器)历史版本和chromedriver驱动,长期更新,建议收藏

众所周知&#xff0c;google是一直被国内屏蔽的&#xff0c;有时候想要下载个chrome浏览器都要去外网&#xff0c;或者到处去搜索才能下载到。因为下载chrome浏览器的这个网址&#xff1a;google.com/chrome/ 在国内是一直被屏蔽掉的。 今天主要讲解的是国内ChromeDriver 的下…

mac安装brew时踩坑解决方案

安装包 mac上如果按照git等工具可能会使用brew&#xff0c;例如使用&#xff1a;$ brew install git命令&#xff0c;如果电脑没有按照brew&#xff0c;则会提示&#xff1a;zsh: command not found: brew 解决方案 需要我们打开brew的官网https://brew.sh/&#xff0c;复制…

spring |Spring Security安全框架 —— 认证流程实现

文章目录 开头简介环境搭建入门使用1、认证1、实体类2、Controller层3、Service层3.1、接口3.2、实现类3.3、实现类&#xff1a;UserDetailsServiceImpl 4、Mapper层3、自定义token认证filter 注意事项小结 开头 Spring Security 官方网址&#xff1a;Spring Security官网 开…

Java @RequestPart注解:同时实现文件上传与JSON对象传参

RequestPart注解&#xff1a;用于处理multipart/form-data请求的一部分&#xff0c;通常用于文件上传或者处理表单中的字段。 java后端举例&#xff1a; PostMapping("/fileTest")public AjaxResult fileTest(RequestPart("file") MultipartFile file,Req…

2023年五一杯数学建模C题双碳目标下低碳建筑研究求解全过程论文及程序

2023年五一杯数学建模 C题 双碳目标下低碳建筑研究 原题再现&#xff1a; “双碳”即碳达峰与碳中和的简称&#xff0c;我国力争2030年前实现碳达峰&#xff0c;2060年前实现碳中和。“双碳”战略倡导绿色、环保、低碳的生活方式。我国加快降低碳排放步伐&#xff0c;大力推进…

模型评估与交叉验证:提升机器学习模型泛化性能的有效策略

模型评估与交叉验证&#xff1a;提升机器学习模型泛化性能的有效策略 目录 &#x1f3af; 模型评估的重要性&#x1f504; 交叉验证的基本概念&#x1f4ca; 交叉验证的实现⚙️ 常见的交叉验证策略&#x1f4c8; 模型选择与超参数调优&#x1f4a1; 结合模型评估与交叉验证的…