Echarts之甘特图type: ‘custom‘参数详解

news2024/12/23 2:46:02

甘特图

在这里插入图片描述

const groupData = XEUtils.groupBy(data, "eqpName"); //分组后的数据
const yAxisData = Object.keys(groupData);
const seriesData = Object.keys(groupData).map((item, index) => {
	let arr = [];
	groupData[item].forEach((GItem) => {
		arr.push([
			index,
			formatDate(GItem.nextMaintenanceDate, "yyyy-MM-dd 00:00:00"),
			formatDate(GItem.nextMaintenanceDate, "yyyy-MM-dd 23:59:59"),
			GItem.eqpName,
		]);
	});
	return arr;
});

this.$nextTick(() => {
	this.getBar("maintain-chart", data, yAxisData, seriesData.flat());
});


getBar(id, data, yAxisData, seriesData) {
	let myChart = echarts.init(document.getElementById(id));
	let option = {
		color: ["#ed7d31"],
		title: {
			top: "3%",
			text: "设备保养维护",
			left: "center",
		},
		tooltip: {
			trigger: "axis",
			formatter: function (val) {
				const data = val[0];
				return `设备:${data.data[3]}<br/>
          ${data.marker}
          维修时间:${formatDate(data.data[1], "yyyy-MM-dd")}`;
			},
		},
		grid: {
			top: "10%",
			left: "3%",
			right: "4%",
			bottom: "10%",
			containLabel: true,
		},
		dataZoom: [
			{
				//区域缩放组件的类型为滑块,默认作用在x轴上
				type: "slider",
				//区域缩放组件的过滤模式,weakFilter:在进行区域缩放时,允许图形的一部分在坐标系上(可见),另一部分在坐标系外(隐藏)
				filterMode: "weakFilter",
				showDataShadow: false,
				bottom: "5%",
				height: 10,
				//区域缩放组件边框颜色
				borderColor: "transparent",
				//区域缩放组件边框背景
				backgroundColor: "#e1eaf3",
				//区域缩放组件上的手柄的样式
				handleIcon:
					"M10.7,11.9H9.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z", // jshint ignore:line
				//手柄大小
				handleSize: 18,
				end: 100,
				//为手柄设置阴影效果
				handleStyle: {
					shadowBlur: 6,
					shadowOffsetX: 1,
					shadowOffsetY: 2,
					shadowColor: "#e1eaf3",
				},
				labelFormatter: "",
			},
			{
				//区域缩放组件的类型为内置在坐标系中,默认作用在x轴的坐标系中
				type: "inside",
				//区域缩放组件的过滤模式,weakFilter:在进行区域缩放时,允许图形的一部分在坐标系上(可见),另一部分在坐标系外(隐藏)
				filterMode: "weakFilter",
			},
		],
		yAxis: [
			{
				type: "category",
				splitLine: {
					show: false,
				},
				axisTick: {
					show: false,
				},
				axisLine: {
					lineStyle: {
						color: "#333",
					},
				},
				axisLabel: {
					color: "#333", // 坐标轴文字颜色
				},
				data: yAxisData,
			},
		],
		xAxis: {
			type: "time",
			interval: 3600 * 24 * 1000,
			position: "bottom",
			axisLabel: {
				color: "#333", // 坐标轴文字颜色
				// fontSize: 10,
				align: "left",
				// verticalAlign: "top",
			},
			splitLine: {
				lineStyle: {
					type: "dashed",
				},
			},
			axisLine: {
				show: true,
				lineStyle: {
					color: "#333",
				},
			},
			axisTick: {
				show: false,
			},
		},
		series: [
			{
				type: "custom",
				encode: { x: [1, 2], y: 0 },
				itemStyle: { normal: {} },
				data: seriesData,
				renderItem: function (params, api) {
					var categoryIndex = api.value(0);
					var start = api.coord([api.value(1), categoryIndex]);
					var end = api.coord([api.value(2), categoryIndex]);
					var height = api.size([0, 1])[1];
					return {
						type: "rect",
						shape: echarts.graphic.clipRectByRect(
							{
								x: start[0],
								y: start[1] - height / 2,
								width: end[0] - start[0],
								height: height,
							},
							{
								x: params.coordSys.x,
								y: params.coordSys.y,
								width: params.coordSys.width,
								height: params.coordSys.height,
							}
						),
						style: api.style(),
					};
				},
			},
		],
	};
	console.log(option);
	myChart.setOption(option);
	window.addEventListener("resize", () => {
		if (myChart) {
			myChart.resize();
		}
	});
},

type: ‘custom’,参数详解

1.renderItem:

开发者自定义的图形元素渲染逻辑,是通过书写 renderItem 函数实现的

2.let categoryIndex = api.value(0)

这里使用 api.value(0) 取出当前 dataItem 中第一个维度的数值。

3.let start = api.coord([api.value(1), categoryIndex])
let end = api.coord([api.value(2), categoryIndex])

这里使用 api.coord(…) 将数值在当前坐标系中转换成为屏幕上的点的像素值。

4.height = api.size([0, 1])[1]
5.encode:
内部参数:
①、 x: [1, 2], // data 中『维度1』和『维度2』对应到 X 轴
②、y: 0// data 中『维度0』对应到 Y 轴

6.data

[ // 维度0 维度1 维度2
     {                
          value: [0, `${baseDate} 1:28`, `${baseDate} 5:28`,'out']//0,1,2代表y轴的索引,后两位代表x轴数据开始和结束
      }
  ]

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

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

相关文章

Graphviz安装向导及入门指南

目录 1、首先在官网下载graphviz 2、安装。 3、测试并在Windows命令行中使用 4、在Python中使用 5、在自带的gvedit.exe 程序中使用 6、在语雀中使用 7、绘制一棵简单的二叉树 8、详细语法介绍 8.1 带标签 8.2 修改方框颜色和形状 8.3子视图 8.4 结构视图 8.5 …

【网络安全】Centos7安装杀毒软件----ClamAV

一、ClamAV介绍 Clam AntiVirus是一个Linux系统上使用的反病毒软件包。主要应用于邮件服务器&#xff0c;采用多线程后台操作&#xff0c;可以自动升级病毒库。 二、安装 1.下载rpm wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 2.升级epe…

4.1、网络层概述

1、主要任务 网络层的主要任务是实现网络互连\color{red}实现网络互连实现网络互连&#xff0c;进而实现数据包在各网路之间的传输\color{red}实现数据包在各网路之间的传输实现数据包在各网路之间的传输 例如&#xff1a; 这些异构型网络若只是需要各自内部通信&#xff0c…

高质量发展指标构建:全国各省高质量发展需求(2014-2021年)

高质量发展是坚持更高层次和更高水平对外开放的发展。中国改革开放四十年的实践充分证明&#xff0c;不断扩大对外开放是推动中国经济社会发展的重要动力&#xff0c;是实现国家繁荣富强的根本出路。因此&#xff0c;在中国经济发展的新时代&#xff0c;推动新一轮高水平开放&a…

docker logs实时查看日志tail

docker logs实时查看日志tail docker logs -f -t --since="2017-05-31" --tail=10 container说明: --since : 指定输出日志开始日期。 -f : 查看实时日志 -t : 查看日志产生的时间戳 -tail=10 : 查看最后的10条日志。 container : 容器名docker logs -f --until=2s说…

Docker常用操作命令总结(一)

文章目录一、Docker的应用场景二、Docker 的优点三、Docker 架构四、安装Docker1、更新 apt 包索引2、安装docker3、安装完成之后&#xff0c;运行命令sudo docker info&#xff0c;检查安装状态4、有可能&#xff0c;第一次需要手动启动服务.就需要执行下面的命令&#xff0c;…

LabVIEW如何减少下一代测试系统中的硬件过时4

LabVIEW如何减少下一代测试系统中的硬件过时4 DSSP Class Definition DSSP父类定义有三种不同类型的函数:仅父类、公共类和基于度量的函数。DSSP父类&#xff0c;DSSP.Lvclass包含所有子类函数的超集&#xff0c;加上父类特有的一些函数。DSSP父类的单个子实例(例如AgSigGen.…

2022年总结(2022年1月1日至2022年12月25日)

前言 时光飞逝&#xff0c;又到了一年一度的年终总结的时间了&#xff0c;2022年充满磨难的一年&#xff0c;悲哉&#xff0c;痛哉~~ 但对于我而言&#xff0c;其实还好&#xff0c;基本无太大影响&#xff0c;黄金单身汉&#xff0c;一人吃饱&#xff0c;全家不饿~&#xff…

spring之手写框架

文章目录前言一、手写spring框架之核心接口实现二、手写spring框架之实例化Bean三、手写spring框架之获取所有set方法四、手写spring框架之给属性赋值4.1 非简单类型属性赋值4.2 简单类型属性赋值附&#xff1a;前言 Spring IoC容器的实现原理&#xff1a;工厂模式解析XML反射…

学习性能所必须的知识之算法

什么是算法? 通过有效地缩小查找范围,只需要很少的次数就能很快速的找到需要的数字,这样的策略或方法就称为“算法”。 算法的好坏对性能有很大的影响。 学习算法的窍门 掌握算法优点与缺陷,“折中”是一个很重要的思维通过在图上推演来思考评价算法的指标 通过复杂度(…

各种型号西门子PLC所支持的通信协议小结

西门子PLC有4大类&#xff0c;几十个型号类型&#xff0c;PLC不同所支持的通讯协议也不相同。 按照大类型来划分&#xff0c;具体可分为串口协议和以太网通信协议两大类。 串口协议主要有&#xff1a;MODBUS RTU 通信协议&#xff1b;PROFIBUS 通信协议&#xff1b;USS通信协…

疫情信息管理系统(附源代码及数据库)

本系统是一个可以对各种疫情进行管理的系统&#xff0c;管理员可以直接对居民、住户进行统一的管理&#xff0c;这样就能在疫情期间大大减轻了管理者的工作量&#xff0c;使管理社区的渠道更加的方便。其主要功能有&#xff1a;登录功能&#xff0c;公告的发布&#xff0c;到访…

2022, 6年技术路, 后疫情时代复盘

专注 聚焦 持续复盘写下你一年的希望...又到了每年一度的复盘时间。转眼一想, 做技术已经 6 年了。说实话&#xff0c;有点疲惫了。今年整个互联网行业都不好过, 加上疫情的反复不断, 从耳边流出了很多裁员的信息, 股市也比较低迷, 身处底层的我们只能夹缝生存。但是, 我又是…

【MySQL基础教程】DQL语句详细介绍

前言 本文为 【MySQL基础教程】DQL语句 相关内容介绍&#xff0c;下边具体将对DQL语句基本语法&#xff0c;基础查询&#xff0c;条件查询&#xff0c;聚合函数&#xff0c;分组查询&#xff0c;排序查询&#xff0c;分页查询&#xff0c;相关案例&#xff0c;执行顺序等进行详…

Elasticsearch 核心技术(二):elasticsearch-head 插件安装和使用

❤️ 个人主页&#xff1a;水滴技术 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; &#x1f338; 订阅专栏&#xff1a;大数据核心技术从入门到精通 文章目录一、安装方式二、下载 head 插件三、安装 head 插件四、运行 head 插件五、使用…

服务器硬件规格常用查看命令——网卡相关命令

lspci 使用lspci命令可以显示系统中的PCI总线和连接到它们的设备信息&#xff0c;在默认情况下&#xff0c;显示一个简短格式的设备列表。但是可以使用“lspci -vvx”或“lspci -vvxxx”显示更加详细的设备信息&#xff0c;在这些信息中包含了PCI设备驱动程序或lspci本身的错误…

GitHub与微信开启“秘密扫描”计划,来确保数据安全

近日GitHub 官方博客更是宣布&#xff1a;" 腾讯微信现在是 GitHub 秘密扫描合作伙伴。" “秘密扫描”是Github发起的一个计划&#xff0c;可别被它名字吓到了&#xff0c;它并不是说秘密的扫描用户的隐私数据&#xff0c;而是和微信合作发起&#xff0c;防止微信开…

Redhat7上安装Red Hat Developer Toolset并自由切换gcc和g++的版本

Redhat7上安装Red Hat Developer Toolset并自由切换gcc和g的版本一、Red Hat Developer Toolset 概述二、使用Red Hat Software Collections2.1 获取pool ID2.2 将pool ID 附加到本地系统中2.3 获取仓库列表2.4 使能上述仓库三、安装 Red Hat Developer Toolset四、升级Red Hat…

大数据分析案例-基于决策树算法构建员工离职预测模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

在windows操作系统上安装mysql数据库

背景 写这个数据库的安装教程&#xff0c;是为了后续文章中在windows系统中搭建测试环境要用到数据库做铺垫&#xff0c;不是所有的人都有云服务器&#xff0c;有的觉得去虚拟机里面安装太麻烦了&#xff0c;电脑会更卡&#xff0c;因此&#xff0c;还不如直接在自己电脑上安装…