vue2动态横条图(横条图样式定时切换)

在这里插入图片描述

每次切换成新图后会清除定时器和图(重新加载,否则要么会重复加载定时器。清除定时器之后要先调用一次index为0的数据)
数据样例

acrossBarDatas:{
	data: ["80", "80"],
	sunffix: ['单位', "单位"],
	title: "标题",
	year: ["2025", "2030"]
}

调用代码 – 因为我同时调了4个 所以传了个id

<acrossBar
echartsId="acrossBar_echarts_1"
:echartsData="acrossBarDatas"
/>

组件代码 – 动态变化的柱子还可以用其他的img图去替换,修改makeOption(type, symbol, datas) symbol的值代表了图,注意type为bar设置symbol无效

<template>
	<div>
		<div class="acrossBar_echarts" :id="echartsId"></div>
	</div>
</template>
<script>
export default {
	name: '',
	components: {},
	mixins: [],
	props: ['echartsId', 'echartsData'],
	data() {
		return {
			myChart: null,
			intervalId: null,
			options: [], // 缓存生成的图表选项
			optionIndex: 0, // 当前选项的索引
		};
	},
	computed: {},
	watch: {
		echartsData: {
			handler(to) {
				if (to) {
					this.getEcharts(to);
				}
			},
		},
	},
	mounted() {
		this.getEcharts();
	},
	methods: {
		getEcharts() {
			// 清除之前的定时器
			if (this.intervalId) {
				clearInterval(this.intervalId);
				this.intervalId = null;
			}

			// 销毁之前的图表实例
			if (this.myChart) {
				this.myChart.dispose();
			}

			var chartDom = document.getElementById(this.echartsId);
			this.myChart = this.$echarts5.init(chartDom);

			if (this.echartsData) {
				// 提前生成并缓存图表选项
				this.options = [
					this.makeOption('pictorialBar', 'circle', this.echartsData),
					this.makeOption('bar', 'triangle', this.echartsData),
					this.makeOption(
						'pictorialBar',
						'diamond',
						this.echartsData
					),
				];

				// 立即应用第一个选项
				this.myChart.setOption(this.options[this.optionIndex]);

				// 设置定时器切换图表选项
				this.intervalId = setInterval(() => {
					this.optionIndex =
						(this.optionIndex + 1) % this.options.length;
					// this.myChart.clear(); // 清除之前的图表
					this.myChart.setOption(this.options[this.optionIndex]);
				}, 2500);
			}
		},
		makeOption(type, symbol, datas) {
			// console.log(echartsData, 'echartsData');
			const labelSetting = {
				show: true,
				position: 'right',
				offset: [10, 0],
				fontSize: 16,
			};
			let echartsData = datas;
			return {
				title: {
					text: echartsData.title,
					left: 'center',
					top: 10,
					textStyle: {
						color: '#333333',
						fontWeight: 400,
						fontSize: '15px',
					},
				},
				tooltip: {
					trigger: 'axis',
					axisPointer: {
						type: 'shadow',
					},
					formatter: function(params, index) {
						let param = params[0];
						return `${param.axisValue}年<br/>${param.marker}${param.seriesName}:${param.value}%`;
					},
				},
				grid: {
					containLabel: true,
					left: 10,
					right: 60,
					top: 30,
					bottom: 15,
				},
				xAxis: {
					type: 'value',
					position: 'bottom',
					axisTick: { show: false },
					axisLine: { show: false },
					splitLine: {
						lineStyle: {
							type: 'dashed',
						},
					},
				},
				yAxis: {
					type: 'category',
					color: ['red'],
					axisLine: { show: false },
					axisLabel: { show: true },
					axisTick: { show: false },
					splitLine: { show: false },
					data: echartsData.year,
				},
				animationDurationUpdate: 500,
				series: [
					{
						name: echartsData.title,
						type: type,
						barGap: '10%',
						label: labelSetting,
						symbolRepeat: true,
						symbolSize: ['80%', '60%'],
						barWidth: '50%',
						label: {
							show: true,
							position: 'right',
							color: 'rgba(51, 51, 51, 1)',
							formatter: function(params, index) {
								return (
									params.value +
									(echartsData.sunffix[params.dataIndex] ==
									null
										? ''
										: echartsData.sunffix[params.dataIndex])
								);
							},
						},
						universalTransition: {
							enabled: true,
							delay: function(idx, total) {
								return (idx / total) * 1000;
							},
						},
						data: [
							{
								value: echartsData.data[0],
								itemStyle: {
									color: 'rgba(195, 227, 138, 1)',
								},
								symbol: symbol,
							},
							{
								value: echartsData.data[1],
								itemStyle: {
									color: 'rgba(53, 163, 69, 1)',
								},
								symbol: symbol,
							},
						],
					},
				],
			};
		},
	},
};
</script>
<style lang="less" scoped>
.acrossBar_echarts {
	width: 416px;
	height: 195px;
}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

可信启动Trusted Board Boot

TBB Trusted Board Boot&#xff08;TBB&#xff09;对所有固件镜像&#xff08;包括普通世界的bootloader&#xff09;进行身份验证&#xff0c;以防止恶意固件在平台上运行。TBB使用公钥加密标准 &#xff08;PKCS&#xff09;来建立信任链&#xff08;Chain of Trust&#…

Log4j2异步打印可变对象的问题

现象 应用代码如下&#xff1a; Test test new Test();test.setA(1);test.setB("1");log.info("before modification: {} \t ",test);test.setA(2);test.setB("2");log.info("after modification: {} \t ",test);问题应用的日志控制…

怎么添加网页到桌面快捷方式?

推荐用过最棒的学习网站&#xff01;https://offernow.cn 添加网页到桌面快捷方式&#xff1f; 很简单&#xff0c;仅需要两步&#xff0c;接下来以chrome浏览器为例。 第一步 在想要保存的网页右上角点击设置。 第二步 保存并分享-创建快捷方式&#xff0c;保存到桌面即可…

使用VisualBox+Vagrant搭建Centos虚拟机环境

1.下载并安装VisualBox&#xff1b; 2.下载并安装Vagrant; 3.打开cmd窗口&#xff0c;执行命令vagrant init centos/7&#xff0c;初始化centos环境&#xff0c;该步骤受网络带宽影响&#xff0c;可能挂级30分钟到1个小时&#xff1b; 4.启动虚拟机&#xff1a;vagrant up&…

C# yolov8 OpenVINO 同步、异步接口视频推理

C# yolov8 OpenVINO 同步、异步接口视频推理 目录 效果 项目 代码 下载 效果 同步推理效果 异步推理效果 项目 代码 using OpenCvSharp; using System; using System.Collections.Generic; using System.Diagnostics; using System.Threading; using System.Windows.Form…

慢阻肺患者为何容易营养不良?朗格力教你轻松改善

#肺科营养#朗格力#班古营养#复合营养素#肺部营养#肺部健康# 慢阻肺是我国常见的、高患病率的慢性呼吸系统疾病,会对肺结构和功能产生影响,从而引起各种不良反应,其中营养不良是常见并发症之一。慢阻肺为什么会发生营养不良?营养不良又是怎么伤害慢阻肺的呢?为什么像班古精准…

鸿蒙 登录界面示例

1.b站登录界面 我的b站教学视频&#xff1a;https://www.bilibili.com/video/BV1LQgQexEGm/?spm_id_from333.999.0.0&vd_sourced0ea58f1127eed138a4ba5421c577eb1 最终实现效果&#xff1a; 需要准备2张图片&#xff0c;分别是向下和向右边的图标 代码&#xff1a; En…

(2024,Vision-RWKV,线性复杂度双向注意力,四向标记移位)通过类似 RWKV 的架构实现高效且可扩展的视觉感知

Vision-RWKV: Efficient and Scalable Visual Perception with RWKV-Like Architectures 公和众与号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 2. 特征聚合机制 3. Vision-RWKV 3.…

一问搞懂Linux信号【上】

Linux信号在Linux系统中的地位仅此于进程间通信&#xff0c;其重要程度不言而喻。本文我们将从信号产生&#xff0c;信号保存&#xff0c;信号处理三个方面来讲解信号。 &#x1f6a9;结合现实认识信号 在讲解信号产生之前&#xff0c;我们先做些预备的工作。 现实生活中信号…

2024.6最最新版MySQL数据库安装(保姆级教程,不懂你捶我)

1.MySQL数据库下载 1.打开MySQL官网 如下页面 2.下翻网页到最底部,找到Download,点击第一个MySQL Community Server 3.选择自己需要的版本以及系统的MySQL: 4.跳转页面会有一个登录/注册页面,这里我们不鸟他,直接开始下载 2.MySQL数据库安装 1.双击我们刚刚下载的安装包 2.勾…

音乐管理系统

摘 要 现如今&#xff0c;在信息快速发展的时代&#xff0c;互联网已经成了人们在日常生活中进行信息交流的重要平台。看起来&#xff0c;听歌只是一种消遣和消遣&#xff0c;其实&#xff0c;只要你选对了曲子&#xff0c;就会产生许多不同的作用。音乐能舒缓身心&#xff0c…

上海交大阿里巴巴推出虚拟试衣新里程碑式工作——AnyFit:任意场景、任意组合!

文章链接&#xff1a;https://arxiv.org/pdf/2405.18172 工程链接&#xff1a;https://colorful-liyu.github.io/anyfit-page/ 今天和大家一起学习的是一种名为AnyFit的新型虚拟试穿系统&#xff0c;旨在解决现有技术在处理不同场景和服饰组合时出现的衣物风格不匹配和质量下…

量化系统--开源强大的qmt交易系统,提供源代码

经过的3天终于写完了qmt_trader的文档了开源直接使用我开源了全部源代码 文档地址 https://gitee.com/li-xingguo11111/qmt_trader 源代码from qmt_trader.qmt_trader import qmt_trader from qmt_trader.xtquant.xttype import StockAccountfrom qmt_trader.xtquant import …

opencascade AIS_InteractiveContext源码学习2

AIS_InteractiveContext 前言 交互上下文&#xff08;Interactive Context&#xff09;允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是&#xff0c;对于已经被交互上下文识别的交互对象&#xff0c;必须使用上下文方法进行…

C语言练习03-字符串

一、遍历字符 #include<stdio.h>int main() {char str[100];//录入字符串printf("请输入一串字符&#xff1a;\n");scanf("%s",str);//遍历字符串char* p str;while(1){char c *p;if(c \0){//如果遍历到结束标记&#xff0c;则循环结束break;}//…

雷池社区版自动SSL

正常安装雷池&#xff0c;并配置站点&#xff0c;暂时不配置ssl 不使用雷池自带的证书申请。 安装&#xff08;acme.sh&#xff09;&#xff0c;使用域名验证方式生成证书 先安装git yum install git 或者 apt-get install git 安装完成后使用 git clone https://gitee.com/n…

应用案例 | 冷藏集装箱基于云的WiFi无线温度监测系统COMET Cloud

一、集装箱的作用和分类 集装箱运输是国际贸易货物多式联运过程中的重要运输方式。由于集装箱运输具有标准化高、密封性好&#xff0c;破损率低、集约化、规模化、班轮化、成本低、质量好等优点&#xff0c;大大提高了货物运输的安全和效率。 集装箱种类很多&#xff0c;按所…

C++类基本常识

文章目录 一、类的默认方法二、类的成员变量初始化1 类的成员变量有三种初始化方法&#xff1a;2 成员变量初始化顺序3 const和static的初始化 三、C内存区域四、const和static 一、类的默认方法 C的类都会有8个默认方法 默认构造函数默认拷贝构造函数默认析构函数默认重载赋…

mongodb嵌套聚合

db.order.aggregate([{$match: {// 下单时间"createTime": {$gte: ISODate("2024-05-01T00:00:00Z"),$lte: ISODate("2024-05-31T23:59:59Z")}// 商品名称,"goods.productName": /美国皓齿/,//订单状态 2:待发货 3:已发货 4:交易成功…

最火AI角色扮演流量已达谷歌搜索20%!每秒处理2万推理请求,Transformer作者公开优化秘诀

卡奥斯智能交互引擎是卡奥斯基于海尔近40年工业生产经验积累和卡奥斯7年工业互联网平台建设的最佳实践&#xff0c;基于大语言模型和RAG技术&#xff0c;集合海量工业领域生态资源方优质产品和知识服务&#xff0c;旨在通过智能搜索、连续交互&#xff0c;实时生成个性化的内容…