Echarts封装动态加载组件,并且添加循环效果

         基于 Echarts 框架的组件,用于实现数据滚动效果。在该组件中,我们首先引入了 Echarts 库,并定义了组件的名称和所需的 props 属性。在 mounted 钩子函数中,我们调用 initChart 方法来初始化图表,并使用 setInterval 定时器来触发 updateChart 方法,以实现数据滚动效果。在 updateChart 方法中,我们通过复制数据、移除数据、截取数据等操作来更新图表,并计算出当前数据索引。最后,我们使用 setOption 方法来更新图表的数据和配置,实现数据的滚动更新效果。

        主要使用了 Echarts 提供的多个配置项和方法,如设置 grid 网格、title 标题、tooltip 工具提示、legend 图例、toolbox 工具箱、xAxis 和 yAxis 坐标轴、series 数据系列等。同时,我们还使用了 Echarts 提供的 LinearGradient 渐变色工具和 label 标签样式等特性,来美化图表。

组件使用实例
<lineDoubleEcharts :data="values" :x-data="times" />
<script>
import lineDoubleEcharts from '@/components/lineDoubleEcharts.vue';
//其他写法省略
components: {Head,lineDoubleEcharts},
data () {return {times: [],// times: ["2023-12-16 09:30:00"],values: [[12.34, 25.24, 24.12, 12.44, 15.74, 22.23, 12.34, 23.24, 24.12, 12.44, 15.74],[16.44, 11.34, 18.54, 34.11, 17.54, 22.42, 33.44, 12.34, 15.54, 34.11, 17.54]],totalvalues: []}},
</script>
组件内写法
<template><div class="echarts-component"><div ref="chart" class="chart"></div><!-- 用于渲染echarts图表的容器 --></div>
</template>
import * as echarts from 'echarts';
export default {name: 'EchartsComponent',props: {data: {type: Array,required: true,},xData: {type: Array,required: true,},},data () {return {currentIndex: 0, // 当前数据索引};},mounted () {this.initChart();},watch: {data: {handler () {this.currentIndex = 0; // 数据改变时重置索引},deep: true,},},methods: {initChart () {this.chart = echarts.init(this.$refs.chart);let colors = ["#1dacfe", "#FF3838", "#ffd300"]this.chartOption = {grid: {left: '7%',right: '7%%',top: '25%',bottom: '20%',},title: {show: false},tooltip: {trigger: 'axis',axisPointer: {type: 'shadow'}},legend: {left: 'right',textStyle: {color: '#fff',},data: ['1', '2'],},toolbox: {show: false,},xAxis: {type: 'category',boundaryGap: false,show: true,axisTick: {show: false},axisLabel: {fontSize: 15,color: '#d0d0d0',margin: 8,interval: 0,},axisLine: {lineStyle: {type: 'solid',color: '#4e608b',//左边线的颜色width: '1'//坐标线的宽度}},data: this.xData,},yAxis: {type: 'value',scale: true,name: '',axisLine: {show: false},splitNumber: 4,axisTick: {show: false},splitLine: {lineStyle: {// 使用深浅的间隔色color: '#4e608b'}},axisLabel: {fontSize: 13,color: '#d0d0d0',margin: 12,},max: Math.max(...[]),min: 0,boundaryGap: [0.2, 0.2]},series: [{name: '1',type: 'line',label: {normal: {show: true,position: 'top',textStyle: {color: colors[0]}}},itemStyle: {normal: {color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{offset: 0,color: colors[0] // 0% 处的颜色}, {offset: 1,color: colors[0] // 100% 处的颜色}], false)}},barWidth: '15%',yAxisIndex: 0,data: [],},{name: '2',type: 'line',label: {normal: {show: true,position: 'top',textStyle: {color: colors[1]}}},itemStyle: {normal: {color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{offset: 0,color: colors[1] // 0% 处的颜色}, {offset: 1,color: colors[1] // 100% 处的颜色}], false)}},barWidth: '15%',yAxisIndex: 0,data: [],},],};this.chart.setOption(this.chartOption);// 实现数据滚动效果setInterval(() => {this.updateChart();}, 2000);},updateChart () {const newData = this.data.slice(); // 复制数据// 将移除的数据添加到结尾newData[0].push(newData[0].shift());newData[1].push(newData[1].shift());// 计算截取数据的开始索引和结束索引const startIndex = this.currentIndex;const endIndex = startIndex + 10; // 每次显示10条数据const displayData = [newData[0].slice(startIndex, endIndex), newData[1].slice(startIndex, endIndex)];this.chartOption.series[0].data = displayData[0];this.chartOption.series[1].data = displayData[1];this.chart.setOption(this.chartOption);// 更新当前数据索引this.currentIndex++;if (this.currentIndex >= newData[0].length) {this.currentIndex = 0;}},},
};
<style scoped>
.echarts-component {width: 100%;height: 100%;
}.chart {width: 100%;height: 100%;
}
</style>

        主要实现了一个使用echarts库创建的Vue组件,用于展示折线图。其中,通过props接收data和xData作为图表的数据来源,通过watch监听data的变化,并重置currentIndex(当前数据索引)的值。在mounted钩子函数中调用initChart()方法进行图表的初始化。initChart()方法初始化echarts实例并设置图表的配置项和数据,然后通过setInterval定时更新图表的数据展示效果,updateChart()方法用于更新图表的数据。最后,使用style scoped对样式进行了限定,使其仅在当前组件中生效。

🐱 个人主页:SHOW科技,公众号:SHOW科技
🙋‍♂️ 作者简介:2020参加工作,专注于前端各领域技术,共同学习共同进步,一起加油呀!
💫优质专栏:前端主流技术分享
📢 资料领取:前端进阶资料可以找我免费领取
🔥 摸鱼学习交流:我们的宗旨是在「工作中摸鱼,摸鱼中进步」,期待大佬一起来摸鱼!
————————————————
版权声明:本文为CSDN博主「SHOW科技」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

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

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

相关文章

《SPSS统计学基础与实证研究应用精解》视频讲解:SPSS依托统计学处理数据的应用场景

《SPSS统计学基础与实证研究应用精解》1.4 视频讲解 视频为《SPSS统计学基础与实证研究应用精解》张甜 杨维忠著 清华大学出版社 一书的随书赠送视频讲解1.4节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。本书旨在手把手教会使…

肝了半个月的学习路线终于上线了,升职加薪,轻松拿捏!

大家好&#xff0c;我是冰河~~ 最近有不少小伙伴问我出去面试找一份好工作要学习哪些知识和技术&#xff0c;有没有什么好的学习路线&#xff0c;这不&#xff0c;我连夜肝了这份Java完整高清学习路线。 学习路线 完整路线 这份Java完整高清学习路线的总体路线图如下所示。…

微信小程序开发学习笔记《7》全局配置以及小程序窗口

微信小程序开发学习笔记《7》全局配置以及小程序窗口 博主正在学习微信小程序开发&#xff0c;希望记录自己学习过程同时与广大网友共同学习讨论。全局配置官方文档 一、全局配置文件及常用的配置项 小程序根目录下的app.json 文件是小程序的全局配置文件。 常用的配置项如…

Redis的实现三:c语言实现平衡二叉树,通过平衡二叉树实现排序集

概况&#xff1a;Redis中的排序集数据结构是相当复杂的独特而有用的东西。它不仅提供了顺序排序数据的能力&#xff0c;而且具有按排名查询有序数据的独特特性。 Redis中的排序集 &#xff08;Sorted Set&#xff09;是一种特殊的数据结构&#xff0c;它结合了集合&#xff0…

C //练习 4-14 定义宏swap(t, x, y)以交换t类型的两个参数。(使用程序块结构会对你有所帮助。)

C程序设计语言 &#xff08;第二版&#xff09; 练习 4-14 练习 4-14 定义宏swap(t, x, y)以交换t类型的两个参数。&#xff08;使用程序块结构会对你有所帮助。&#xff09; 注意&#xff1a;代码在win32控制台运行&#xff0c;在不同的IDE环境下&#xff0c;有部分可能需要…

YOLOv7-tiny,通过pycocotools包得到预测大中小尺寸目标的指标值

文章目录 参考链接步骤认识正确的instances_val2017.json文件格式 代码&#xff08;mogui_tococo.py&#xff0c;用于我自己的数据集&#xff09; 参考链接 需要先在环境中安装pycocotools pip install pycocotools魔鬼面具的代码&#xff1a;objectdetection-tricks/tricks_…

openssl3.2 - 官方demo学习 - server-conf.c

文章目录 openssl3.2 - 官方demo学习 - server-conf.c概述笔记END openssl3.2 - 官方demo学习 - server-conf.c 概述 建立TLS服务器, 参数从配置文件中来.通过SSL_CONF_CTX_set_flags()来决定读那些TLS参数 遍历配置文件, 通过SSL_CONF_cmd()来读取预期的配置项. 如果不是TLS…

第 379 场 LeetCode 周赛题解

A 对角线最长的矩形的面积 模拟 class Solution { public:int areaOfMaxDiagonal(vector<vector<int>> &dimensions) {int res 0, len2 0;for (auto &x: dimensions)if (x[0] * x[0] x[1] * x[1] > len2 || x[0] * x[0] x[1] * x[1] len2 &&am…

SAP 如何快速查询成本的异常

每当月末CO月结的时候&#xff0c;生产企业或多或少会遇到标准成本与实际成本差异偏大的情况&#xff0c;我们如何快速查看产成品的成本异常&#xff0c;一般来说二者偏差5%是正常的&#xff0c;如果偏差20%&#xff0c;就要重点关注。我们通过0062报表来查看 进入“屏幕选择”…

C语言之函数的递归

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> //最简单的递归 int main() { printf("hehe\n"); main(); return 0; } //练习1&#xff1a;接受一个整型值&#xff0c;按顺序打印它的每一位 //例如&#xff1a;输入1234 输出 1 2 3 4 #…

进销存+小程序商城:实现批发零售企业的互联网转型与管理升级

在当今互联网高速发展的时代&#xff0c;越来越多的批发零售企业开始开始考虑转型。在这个行业中&#xff0c;企业要想取得更好的发展&#xff0c;就要积极地拥抱互联网。专属的订货商城小程序是企业转型的第一步。通过将进销存与订货商城一体化&#xff0c;企业可以更好地满足…

argparse库

引言 argparse-------python用于解析命令行参数的标准模块 快速上手 import argparse parser argparse.ArgumentParser() 创建一个命令行解析器对象 parser.add_argument() 向解析器…

C语言—存储管理

在C语言中&#xff0c;存储管理是指分配、使用和释放内存的过程。C提供了几个标准库函数来处理动态内存分配&#xff0c;这对于创建灵活且高效的程序至关重要。理解C语言的存储管理主要涉及以下几个方面&#xff1a; 1. 动态内存分配函数 malloc(size_t size) 分配指定大小的…

APP流量变现——4项关键指标决定了APP混合变现的收入

APP流量变现的方式有很多种&#xff0c;主要的可以分为IAA&#xff08;广告&#xff09;收入、IAP&#xff08;用户应用内付费&#xff09;收入、订阅收入、单次买断收入。这里主要围绕当前流行的混合变现模式&#xff0c;即广告收入&#xff08;IAA&#xff09;应用内付费&…

外汇天眼:塞浦路斯证券交易委员会(CySEC)确认了四家投资公司退出投资者赔偿基金(ICF)会员资格

塞浦路斯证券交易委员会&#xff08;CySEC&#xff09;今天确认了四家投资公司已被取消其在投资者赔偿基金&#xff08;ICF&#xff09;的会员资格。 以下公司不再是ICF的会员&#xff1a; 1.Stone Edge Capital Ltd&#xff08;LEI 213800PZFB9VV8FNWB30&#xff09;&#xf…

yum来安装php727

yum 安装php727,一键安装&#xff0c;都是安装在系统的默认位置&#xff0c;方便快捷 先确定linux平台中centos的版本信息&#xff0c;一下内容针对el7 查看linux版本 &#xff1a; cat /etc/redhat-release 查看内核版本命令&#xff1a; cat /proc/version (0)如果有安装好…

Hive中的四种排序

1.order by 全局排序&#xff0c;只有一个Reducer&#xff08;多个reducer无法保证全局有序&#xff09;&#xff0c;会导致当输入规模较大时&#xff0c;消耗较长的计算时间 hive.mapred.mode strict 模式下 必须指定 limit 否则执行会报错。 2.sort by 不是全局排序&…

3万字数据结构与算法学习笔记+知识点总结

文章目录 数据结构与算法排序排序算法常见排序算法复杂度冒泡排序&#xff08;Bubble Sort&#xff09;选择排序&#xff08;Selection Sort&#xff09;插入排序&#xff08;Insertion Sort&#xff09;希尔排序&#xff08;Shell Sort&#xff09;堆排序&#xff08;Heap Sor…

2024上海国际冶金及材料分析测试仪器设备展览会

2024上海国际冶金及材料分析测试仪器设备展览会 时间&#xff1a;2024年12月18&#xff5e;20日 地点&#xff1a;上海新国际博览中心 ◆ 》》》组织机构&#xff1a; 主办单位&#xff1a;全联冶金商会、中国宝武钢铁集团有限公司、上海市金属学会 支持单位&#xff…