Vue使用Echarts折线图,实现点击播放、暂停、选择播放倍数;实现数据直播功能

news2024/12/20 2:29:20

文章目录

  • 🌟前言
  • 🌟先看效果
  • 🌟整体代码(详细注释)
  • 🌟写在最后

在这里插入图片描述

🌟前言

哈喽小伙伴们,最近公司有个小需求,就是基于Echarts的折线图,做一个数据直播的功能;拿到所有图表数据之后,通过点击播放,暂停,选择播放倍数来实现相应的效果,更直观的为客户展现数据变化的过程;那接下来我们一起来看看吧

🌟先看效果

Echarts折线图逐点播放

🌟整体代码(详细注释)

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Echarts折线图逐点播放</title>
  <!-- 引入vue.js -->
  <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14"></script>
  <!-- 引入element的css -->
  <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
  <!-- 引入组件库 -->
  <script src="https://unpkg.com/element-ui/lib/index.js"></script>
  <!-- 引入Echarts库 -->
  <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.2.2/echarts.min.js"></script>
</head>

<body>
  <div id="app">
    <!-- 用于展示Echarts折线图的div -->
    <div id="line-chart" style="width: 100%; height: 800px;"></div>
    <!-- 播放、暂停按钮 -->
    <el-button type="primary" @click="startPlay">播放</el-button>
    <el-button type="success" @click="stopPlay">暂停</el-button>
    <el-select v-model="speed" placeholder="请选择播放速度">
      <el-option label="1.0x" :value="1000 / 1"></el-option>
      <el-option label="2.0x" :value="1000 / 2"></el-option>
      <el-option label="3.0x" :value="1000 / 3"></el-option>
      <el-option label="4.0x" :value="1000 / 4"></el-option>
    </el-select>
  </div>
</body>

</html>
<script type="text/javascript">
  new Vue({
    el: '#app',
    data: function () {
      return {
        myChart: null, // Echarts实例
        timer: null, // 定时器
        speed: 1000, // 播放速度,单位ms
        // 折线图数据
        data: [10, 52, 200, 334, 390, 330, 220,10, 52, 200, 334, 390, 330, 220],
        // x轴数据
        xData: ['周一', '周二', '周三', '周四', '周五', '周六', '周日', '周一', '周二', '周三', '周四', '周五', '周六', '周日'],
        newData: [], // 新的y轴数据
        newXData: [], // 新的x轴数据
        currentIndex: 0 //  // 定义一个变量保存当前播放到的点
      }
    },
    mounted() {
      this.initChart()
    },
    methods: {
      // 初始化
      initChart() {
        // 初始化Echarts
        this.myChart = echarts.init(document.getElementById('line-chart'));
        // 绘制折线图
        this.myChart.setOption({
          xAxis: {
            type: 'category',
            data: this.xData
          },
          yAxis: {
            type: 'value'
          },
          series: [{
            type: 'line',
            data: this.data
          }]
        });
        let that = this
        // 监听浏览器变化,使图表大小也随之变化
        window.addEventListener('resize', function () {
          that.myChart.resize()
        })
      },
      // 播放
      startPlay() {
        let that = this
        // 开启定时器
        this.timer = setInterval(function () {
          // 将第一个数据作为吃书播放的点
          that.newData.push(that.data[that.currentIndex]);
          that.newXData.push(that.xData[that.currentIndex])
          // 如果当前点已经是最后一个,就清除定时器和数据
          if (that.currentIndex > that.xData.length - 1) {
            clearInterval(that.timer);
            that.$message.success('完成')
            that.currentIndex = 0
            that.newXData = []
            that.newData = []
            return;
          }
          // // 更新每个点的数值
          that.myChart.setOption({
            xAxis: {
              type: 'category',
              data: that.newXData
            },
            yAxis: {
              type: 'value'
            },
            series: [{
              type: 'line',
              data: that.newData
            }]
          });
          that.currentIndex++;
        }, this.speed);
      },
      // 暂停
      stopPlay() {
        clearInterval(this.timer);
      }
    }
  })
</script>

🌟写在最后

✨原创不易,还希望各位大佬支持一下!
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!

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

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

相关文章

manacher(图文详解)

文章目录 简要介绍实际应用算法详解 简要介绍 马拉车算法&#xff0c;Manacher‘s Algorithm 是用来查找一个字符串的最长回文子串的线性方法&#xff0c;是一个叫Manacher的人在1975年发明的&#xff0c;这个方法的最大贡献是在于将时间复杂度提升到了线性O(N)。 实际应用 刷…

玩转脚本实现自动化

目录 前言&#xff1a; 自动化原理 前置和后置脚本的区别&#xff08;它们的功能就如同名字一样&#xff09; 淘宝联盟接入文档 签名算法 调用示例 配置环境参数 设置全局变量 设置相关环境下的服务器地址 开始分析参数指定规则 添加接口 前言&#xff1a; 自动化测…

shell索引数组变量-定义获取拼接删除

目录 介绍数组的定义演示 数组的获取数组的拼接演示&#xff1a; 数组的删除 介绍 Shell 支持数组&#xff08;Array&#xff09;, 数组是若干数据的集合&#xff0c;其中的每一份数据都称为数组的元素。 &#xff08; 注意Bash Shell 只支持一维数组&#xff0c;不支持多维数组…

如何在ASP.NET Core应用中实现与第三方IoC/DI框架的整合?

我们知道整个ASP.NET Core建立在以ServiceCollection/ServiceProvider为核心的DI框架上&#xff0c;它甚至提供了扩展点使我们可以与第三方DI框架进行整合。对此比较了解的读者朋友应该很清楚&#xff0c;针对第三方DI框架的整合可以通过在定义Startup类型的ConfigureServices方…

大学毕业生自荐信范文

大学毕业生自荐信范文1 尊敬的贵公司领导&#xff1a; 您好&#xff01; 首先感谢您对我的关注&#xff0c;在我即将走出校门的时候&#xff0c;给我一次宝贵的工作机会。 学习了两年的会计专业相关知识后&#xff0c;已经使得我对会计行业有了深刻的认识。技能要靠经验&#x…

7.OpenCV-图像轮廓

1.通过OpenCV的findContours可以很方便的找到图片中内容的轮廓。 2.为了提取轮廓有更高的准确率&#xff0c;在提取轮廓前&#xff0c;需要对图片进行预处理&#xff08;二值阈值&#xff09;&#xff0c;只保留感兴趣的图像。 3.通过计算轮廓面积与外接矩形或外接圆的面积&a…

2023年6/16 操作系统小知识点

目录 分值第二章1. 进程状态转化的条件2. 进程控制块概念&#xff0c;作用&#xff0c;构成。3. 进程上下文概念&#xff0c;组成4. 进程的创建过程以及步骤5. 作业调度和低级调度算法&#xff0c;基本思想&#xff0c;7个&#xff0c;都要掌握6. 线程概念和处理过程7. 为什么有…

【玩转Docker小鲸鱼叭】虚拟化技术是什么?

到底什么是虚拟化&#xff1f; Docker 是一款基于容器虚拟化技术构建的软件&#xff0c;那到底什么虚拟化技术呢&#xff1f;在学习Docker之前&#xff0c;先简单了解下虚拟化技术。 虚拟化是云原生的实现基础&#xff0c;它能够帮助我们更加有效地利用物理计算机硬件。 虚拟…

德国Kipu Quantum与法国Pasqal合作优化量子算法

​ &#xff08;图片来源&#xff1a;网络&#xff09; 6月12日&#xff0c;德国量子软件公司Kipu Quantum宣布与法国中性原子量子计算领域的领导者PASQAL达成为期两年的研发协议&#xff0c;以优化量子算法功能&#xff0c;并为企业加速带来量子效益。 Kipu Quantum专注于为特…

Pytest教程__allure报告(11)

一、allure工具环境配置 windows安装allure 1、下载allure工具包 进入工具包官网&#xff1a;https://github.com/allure-framework/allure2/releases 2、解压下载包 3、将解压包的bin目录路径添加到环境变量中 4、打开cmd命令行输入 allure --version 确认是否安装成功 lin…

文件从 UNIX(LF) 批量改为 PC(CR+LF) ,编码格式保持源文件编码,CMD转换成功

如何把文件从 UNIX(LF) 批量改为 PC(CRLF) &#xff0c;编码格式保持源文件编码&#xff0c;通过电脑自带cmd 批量更改-1.0 chcp 65001 && FOR /F "tokens*" %f IN (dir /b D:\opt\output\DATA_FILE\20230531\*.DAT) DO type "D:\opt\output\DATA_FILE…

经典的设计模式21——策略模式

文章目录 策略模式 猛的发现策略模式和状态模式的结构图长得到好像&#xff0c;可得好好区分区分。 不过真的好像&#xff0c;就是方法那里传递的参数不一样。 百度来一波。 策略模式 定义&#xff1a; 定义了算法家族&#xff0c;分别封装起来&#xff0c;让他们之间可以互…

数字电路基础---锁存器

目录 锁存器 1、简介 2、实验任务 3、程序设计 3.1、缺少 else 分支的锁存器代码 3.2、补齐 else 分支 3.3、缺少 default 的 case 语句的锁存器代码 3.3、补齐 default 的 case 语句 4、本章总结 锁存器 锁存器&#xff08;俗称 Latch&#xff09;是数字电路中的一种…

别让存储成为ChatGPT大模型训练的关键瓶颈

当下科技行业be like... 据说现在的科技公司&#xff0c;不是在抢GPU&#xff0c;就是在往抢GPU的路上……此前4月&#xff0c;特斯拉CEO马斯克就购买了1万块GPU&#xff0c;他还称公司将继续大量购买英伟达的GPU。 在国内&#xff0c;近日也有报道称&#xff0c;字节跳动今年…

MySQL数据库事务和存储引擎(贼详细)

目录 一、MySQL 事物 1、事务的概念 2、 事务的ACID特点 &#xff08;1&#xff09;原子性 &#xff08;2&#xff09;一致性 &#xff08;3&#xff09; 隔离性 &#xff08;4&#xff09;事务之间的相互影响 &#xff08;5&#xff09; Mysql及事物隔离级别 &#…

你知道视频配音怎么配出好听的声音吗

小明&#xff1a;最近我在制作一个视频项目&#xff0c;但是我发现视频中的原声不够理想&#xff0c;我想给它配上好听的声音。你知道怎么配音才能让声音听起来更好吗&#xff1f; 小李&#xff1a;当然&#xff01;配音是提升视频质量的重要一环。想知道视频配音怎么配出好听…

uniapp实现应用wgt资源热更新

APP更新一般有两种形式 1、整包更新&#xff0c;通过hbuliderx提供的在线云打包就属于整包更新&#xff0c;属于全量更新&#xff0c;缺点就是打包时间长、要重新走市场审核。费时 2、wgt资源包热更新&#xff0c;通过hbuliderx打wgt包 &#xff0c;速度快&#xff0c;能在应用…

iphone测试中除了appium,还有更好用的工具吗

除了Appium&#xff0c;还有一些其他的工具可以用于iPhone测试&#xff0c;下面列举几个&#xff1a; 1. XCUITest XCUITest是苹果官方提供的UI自动化测试框架&#xff0c;可以用于iPhone和iPad应用程序的自动化测试。XCUITest可以模拟用户操作&#xff0c;例如点击、滑动、输…

机器学习实践(1.1)XGBoost分类任务

前言 XGBoost属于Boosting集成学习模型&#xff0c;由华盛顿大学陈天齐博士提出&#xff0c;因在机器学习挑战赛中大放异彩而被业界所熟知。相比越来越流行的深度神经网络&#xff0c;XGBoost能更好的处理表格数据&#xff0c;并具有更强的可解释性&#xff0c;还具有易于调参…

若依微服务 + seata1.5.2版本分布式事务(安装配置nacos+部署)

若依官方使用的1.4.0版本seata&#xff0c;版本较低配置相对更麻烦一些 一、seata服务端下载&#xff0c;下载方式介绍两种入口&#xff0c;如下&#xff1a; 1、找到对应版本&#xff0c;下载 binary 即可。 下载包名为&#xff1a;seata-server-1.5.2.zip 2. github上下载 …