echarts图表进度条类型图

news2024/11/26 18:22:19

1、实现效果
左边是类别、数量,中间类似于进度条,右边是所占百分比
在这里插入图片描述
2、实现思路
x轴不显示,y轴的axisLabel用富文本,显示机器与台数;图表有两个数据组,分别用蓝色和灰色表示,两个柱子重合,灰色柱子在蓝色柱子下面;灰色柱子的label用富文本,显示占比。
3、实现代码
(1)在template里写个容器

<div class="chartStyle" ref="chartImplement"></div>

在style里定义容器的大小

.chartStyle {
	height: 300px;
	width: 700px;
}

(2)在data里声明一个变量

myChartLine:'',

在methods里写个配置图表的函数,输入参数为dataAll,包含了机具的类型、数量、占比等信息。数据格式为
dataAll = {
dataX: dataX,//类别
dataY: dataY,//数量
dataSum: dataSum,//总数
dataPercent: dataPercent,//占比
}

initSchedule(dataAll) {
				let _this = this;
				this.myChartLine = echarts.init(this.$refs.chartImplement)
				let myColor = ['#3C83FF']
				var option = {
					grid: { // 直角坐标系内绘图网格
						left: '25%', //grid 组件离容器左侧的距离,
						//left的值可以是80这样具体像素值,
						//也可以是'80%'这样相对于容器高度的百分比
						right: '15%',
						//containLabel: true   //gid区域是否包含坐标轴的刻度标签。为true的时候,
						// left/right/top/bottom/width/height决定的是包括了坐标轴标签在内的
						//所有内容所形成的矩形的位置.常用于【防止标签溢出】的场景
					},
					xAxis: { //直角坐标系grid中的x轴,
						//一般情况下单个grid组件最多只能放上下两个x轴,
						//多于两个x轴需要通过配置offset属性防止同个位置多个x轴的重叠。
						type: 'value', //坐标轴类型,分别有:
						//'value'-数值轴;'category'-类目轴;
						//'time'-时间轴;'log'-对数轴
						splitLine: {
							show: false
						}, //坐标轴在 grid 区域中的分隔线
						axisLabel: {
							show: false
						}, //坐标轴刻度标签
						axisTick: {
							show: false
						}, //坐标轴刻度
						axisLine: {
							show: false
						}, //坐标轴轴线
					},
					yAxis: {
						type: 'category',
						axisTick: {
							show: false
						},
						axisLine: {
							show: false
						},
						axisLabel: {
							color: 'rgba(0,0,0,.7)',
							fontSize: 14,
							formatter: function(data) {
								var traceValue;
								for (var i = 0; i < dataAll.dataX.length; i++) {
									if (data === dataAll.dataX[i]) {
										traceValue = dataAll.dataY[i]
										break
									}
								}
								var arr = [
									'{a|' + data + '}',
									'{b|' + traceValue + '}',
									'{c|台}'
								]
								return arr.join('')
							},
							textStyle: {
								rich: {
									a: {
										fontSize: 14,
										width: 100
									},
									b: {
										fontSize: 14,
										align: 'center',
										color: '#3C83FF',
										fontWeight: 600,
									},
									c: {
										padding: [0, 0, 0, 5],
										fontSize: 14,
										align: 'center',
									}
								}
							},
						},
						data: dataAll.dataX //类目数据,在类目轴(type: 'category')中有效。
						//如果没有设置 type,但是设置了axis.data,则认为type 是 'category'。
					},
					series: [ //系列列表。每个系列通过 type 决定自己的图表类型
						{
							name: '%', //系列名称
							type: 'bar', //柱状、条形图
							barWidth: 15, //柱条的宽度,默认自适应
							data: dataAll.dataPercent, //系列中数据内容数组
							label: { //图形上的文本标签
								show: true,
								position: 'right', //标签的位置
								offset: [0, -40], //标签文字的偏移,此处表示向上偏移40
								//formatter: '{c}{a}',//标签内容格式器 {a}-系列名,{b}-数据名,{c}-数据值
								formatter: function(data) {
									//.toFixed(0)去掉小数位,如果为2就是保留两位小数
									//let b = data.percent.toFixed(0) + "%";
									//subText = b;
									return '';
								},
								color: 'rgba(0,0,0,.7)', //标签字体颜色
								fontSize: 26 //标签字号
							},
							itemStyle: { //图形样式
								normal: { //normal 图形在默认状态下的样式;
									//emphasis图形在高亮状态下的样式
									barBorderRadius: 10, //柱条圆角半径,单位px.
									//此处统一设置4个角的圆角大小;
									//也可以分开设置[10,10,10,10]顺时针左上、右上、右下、左下
									color: function(params) {
										let num = myColor.length; //得到myColor颜色数组的长度
										return myColor[params.dataIndex % num]; //返回颜色数组中的一个对应的颜色值
									},
								}
							},
							zlevel: 1 //柱状图所有图形的 zlevel 值,
							//zlevel 大的 Canvas 会放在 zlevel 小的 Canvas 的上面
						},
						{
							name: '进度条背景',
							type: 'bar',
							label: { //图形上的文本标签
								show: true,
								position: 'right', //标签的位置
								offset: [0, 0], //标签文字的偏移,此处表示向上偏移40
								//formatter: '{c}{a}',//标签内容格式器 {a}-系列名,{b}-数据名,{c}-数据值
								formatter: function(data) {
									//.toFixed(0)去掉小数位,如果为2就是保留两位小数
									var traceValue;
									for (var i = 0; i < dataAll.dataX.length; i++) {
										if (data.name === dataAll.dataX[i]) {
											traceValue = dataAll.dataPercent[i]
											break
										}
									}
									var arr = [
										'{a|' + traceValue + '}',
										'{b|%}'
									]
									return arr.join('');
								},
								textStyle: {
									rich: {
										a: {
											fontSize: 14,
											color: 'rgba(0,0,0,0.7)',
											fontWeight: 560,
											padding: [0, 0, 0, 15],
										},
										b: {
											fontSize: 14,
											color: 'rgba(0,0,0,0.7)',
											padding: [0, 0, 0, 3],
											align: 'center',
										},
									}
								},
							},
							barGap: '-100%', //不同系列的柱间距离,为百分比。
							// 在同一坐标系上,此属性会被多个 'bar' 系列共享。
							// 此属性应设置于此坐标系中最后一个 'bar' 系列上才会生效,
							//并且是对此坐标系中所有 'bar' 系列生效。
							barWidth: 15,
							data: dataAll.dataSum,

							color: '#DEE0E3', //柱条颜色
							itemStyle: {
								normal: {
									barBorderRadius: 10
								}
							}
						},

					]
				};
				this.myChartLine.setOption(option, true);
				window.addEventListener("resize", () => {
					if (this.myChartLine) {
						this.myChartLine.resize();
					}
				});
			},

(3)调用该函数
这里假设有100台机器,初始化数据

initData() {
				var dataX = ['旋耕机1', '旋耕机2', '旋耕机3', '旋耕机4', '旋耕机5']
				var dataY = ['30', '20', '15', '25', '10'];
				var dataPercent = ['30', '20', '15', '25', '10'];
				var dataSum = new Array(dataX.length).fill(100);
				var data = {
					dataX: dataX,
					dataY: dataY,
					dataSum: dataSum,
					dataPercent: dataPercent,
				}
				this.initSchedule(data);
			},

在mounted中调用initData

mounted() {
			this.initData();
		},

完成

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

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

相关文章

Jmeter beanshell编程实例

目录 1、引言 2、需求 3、BeanShell实现 3.1、原始单元测试的java代码&#xff1a; 3.2、调用的RSAUtil原始方法&#xff1a; 3.3、使用BeanShell预处理器实现报文加密&#xff1a; 库导入部分&#xff1a; JSON报文组装&#xff1a; RSA加密&#xff1a; 3.4、取样器…

【C语言】指针进化:传参与函数(2)

莫道君行早&#xff0c;更有早行人。— 出自《增广贤文上集》 解释&#xff1a;别说你出发的早&#xff0c;还有比你更早的人。 这篇博客我们将会深入的理解数组传参和函数指针等指针&#xff0c;是非常重要的内容&#xff0c;学好这部分才能算真正学懂C语言。 目录 一维数组传…

【网络】socket——预备知识 | 套接字 | UDP网络通信

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《网络》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 在前面本喵对网络的整体轮廓做了一个大概的介绍&#xff0c;比如分层&#xff0c;协议等等内容&#x…

UFS 14 - UFS RPMB安全读写命令

UFS 14 - UFS RPMB安全读写命令 1 SECURITY PROTOCOL IN/OUT Commands1.1 CDB format of SECURITY PROTOCOL IN/OUT commands1.2 Supported security protocols list description1.3 Certificate data description 2 CDB format of SECURITY PROTOCOL IN/OUT commands demo2.1 …

Spring Boot原理分析(一):项目启动流程、自动装配

文章目录 一、项目启动流程二、SpringBootApplication.java源码解析1.准备工作2.源码3.自定义注解4.组合注解5.注解ComponentScan过滤器 6.注解SpringBootConfigurationConfiguration 7.注解EnableAutoConfiguration&#xff08;1&#xff09;Spring手动装配使用XML配置文件使用…

Nerf论文阅读笔记Neuralangelo: High-Fidelity Neural Surface Reconstruction

Neuralangelo&#xff1a;高保真神经表面重建 公众号&#xff1a;AI知识物语&#xff1b;B站暂定&#xff1b;知乎同名 视频入门介绍可以参考 B站——CVPR 2023最新工作&#xff01;Neuralangelo&#xff1a;高保真Nerf表面重建 https://www.bilibili.com/video/BV1Ju411W7…

杨氏矩阵,字符串左旋,字符串旋转结果题目解析

杨氏矩阵 题目要求:有一个数字矩阵&#xff0c;矩阵的每行从左到右是递增的&#xff0c;矩阵从上到下是递增的&#xff0c;请编写程序在这样的矩阵中查找某个数字是否存在。 示例 分析:我们仔细分析&#xff0c;不难发现&#xff0c;对于杨氏矩阵老说&#xff0c;右上角和左下…

leetcode1020. 飞地的数量

https://leetcode.cn/classic/problems/number-of-enclaves/description/ 给你一个大小为 m x n 的二进制矩阵 grid &#xff0c;其中 0 表示一个海洋单元格、1 表示一个陆地单元格。 一次 移动 是指从一个陆地单元格走到另一个相邻&#xff08;上、下、左、右&#xff09;的…

哈希的应用->位图

ps&#xff1a;左移位并不是向左移动位&#xff0c;而是低数据位向高数据位挪动 位图&#xff08;主要接口&#xff0c;set(size_t)标识、reset(size_t)取消、test(size_t) 查看 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一…

做软件测试到底要不要学编程?

乔布斯曾经说过“每个人都应该学习编程&#xff0c;因为它会教你如何思考”&#xff0c;看&#xff0c;乔帮主都觉得所有人都应该学编程&#xff0c;那你说做测试的要不要学&#xff1f;当然要。 作为测试人员&#xff0c;除了上面这个原因&#xff0c;我觉得如果会编程&#x…

Android架构之MVC,MVP,MVVM解析

MVC架构 View&#xff1a;Acitivity(View)、Fragment(View)视图&#xff0c;在android里xml布局转成View后&#xff0c;加载到了Activity/Fragment里了。 Controller&#xff1a;Controller对应着Activity/Fragment&#xff0c;绑定UI&#xff0c;处理各种业务。 Model&#xf…

python接口自动化(三十)--html测试报告通过邮件发出去——中(详解)

简介 上一篇&#xff0c;我们虽然已经将生成的最新的测试报告发出去了&#xff0c;但是MIMEText 只能发送正文&#xff0c;无法带附件&#xff0c;因此我还需要继续改造我们的代码&#xff0c;实现可以发送带有附件的邮件。发送带附件的需要导入另外一个模块 MIMEMultipart。还…

java版电子招标采购系统源码之电子招标采购实践与展望-招标采购管理系统

统一供应商门户 便捷动态、呈现丰富 供应商门户具备内外协同的能力&#xff0c;为外部供应商集中推送展示与其相关的所有采购业务信息&#xff08;历史合作、考察整改&#xff0c;绩效评价等&#xff09;&#xff0c;支持供应商信息的自助维护&#xff0c;实时风险自动提示。…

springboot+MySQL实现4S店车辆管理系统

本系统为了数据库结构的灵活性所以打算采用MySQL来设计数据库&#xff0c;而java技术&#xff0c;B/S架构则保证了较高的平台适应性。本文主要介绍了本系统的开发背景&#xff0c;所要完成的功能和开发的过程&#xff0c;主要说明了系统设计的重点、设计思想。

计算机体系结构基础知识介绍之使用多问题和静态调度来利用 流水线

为了提高处理器的性能&#xff0c;我们需要让每个时钟周期内发出多条指令&#xff0c;而不是只发出一条。这种多发射处理器有三种主要类型&#xff1a; 1. 静态调度的超标量处理器 2. VLIW&#xff08;非常长指令字&#xff09;处理器 3. 动态调度的超标量处理器。 这三种类型的…

lua 请求ftp服务器数据,下载文件

1、装入ftp库 2、调用ftp的get()方法 3、get()方法参数格式&#xff1a; 4、将返回到的数据写入文件中 例如&#xff0c;本次获取专利数据系统 http://patdata1.cnipa.gov.cn/ 的ftp站点数据 local ftp require("socket.ftp")--此处我没填端口号 file,err ftp.g…

findfont: Font family ‘Times New Roman‘ not found.

问题 Linux 使用 matplotlib.pyplot 画图时为了使字体和英文论文中的 Times of Roman 一致&#xff0c;通常会用到如下文本格式 font1 {family: Times New Roman, # x and y labelsweight: normal,size: 16}但在实际使用时会出现如下报警信息&#xff1a; findfont: Font …

element ui 导入模块的封装

导入组件的封装 <template><Modal :visible"visible" title"导入" onSave"onSave" onCancal"closeDialog"><template #default><el-upload ref"upload" class"upload-demo"action"ht…

Scala中使用 break 和 continue

Scala中没有 break 和 continue 关键字&#xff0c;但是我们可以用 Breaks 类提供的相应方法来实现对应功能。 在Java中&#xff0c;break continue return的区别 1、break&#xff1a;break不仅可以结束其所在的循环&#xff0c;还可结束其外层循环&#xff0c;但一次只能结束…

Vulnhub: Hackable:II靶机

kali&#xff1a;192.168.111.111 靶机&#xff1a;192.168.111.142 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.142 网站的files目录 ftp存在匿名登录&#xff0c;所在目录为网站的files目录 ftp上传反弹shell 提权 目标根目录下的.ru…