echarts 柱状图

news2024/9/26 5:12:19

注意点

1.y轴显示的序号和名称需要在数据中拼接,而不是在y轴data中拼接,

数据过多会导致下拉的时候,触发y轴formatter,更新序号,序号会重新排列,不准确。

2.需用到堆叠效果,三个柱子。如果想要两个系列的柱子重叠,可以设置 barGap 为 '-100%'。这在用柱子做背景的时候有用(中间的柱子)。

3.第一根柱子的 position: "right", 相当于百分比跟随柱子的最右边,data是百分比的数据

4.如何固定最后一根柱子的高度在同一个位置,data: dataArry.map(item => fixedTotal)

所有的数据返回项都变成新数组,全部返回[100,100,100........]

示例

let myChartThree = null;
const chartThree = (dataArry) => {
	setTimeout(() => {
		if (myChartThree) {
			myChartThree.dispose();
			myChartThree = null;
		}
		myChartThree = echarts.init(document.getElementById("threeEcharts"));
		// let dataArry = [{
		// 	name: '罗布林卡', value: 3.5, total: 5050
		// }, {
		// 	name: '蚌埠市', value: 4.8, total: 5000
		// },
		// {
		// 	name: '巴松措', value: 3.6, total: 4900
		// }, {
		// 	name: '西藏自然博物馆', value: 7.8, total: 2499
		// }, {
		// 	name: '文成公主藏文化风情园景', value: 6.5, total: 4233
		// },
		// {
		// 	name: '芒康盐井旅游景区', value: 10, total: 4233
		// },
		// ];

		const fixedTotal = 100;
		dataArry.forEach((item, index) => {
			item.percentage = (item.value / fixedTotal * 100).toFixed(1) + '%';
			item.labelName = `${index + 1}.${item.name}`;
		});
		let option = {
			dataZoom: [{
				type: 'inside',
				// backgroundColor: 'rgba(245, 245, 245)',
				brushSelect: false,
				width: 5,
				show: false, // 将 show 属性设置为 false 来隐藏滚动条
				yAxisIndex: [0],
				startValue: 0,
				endValue: 6,
				handleStyle: {
					color: '#fff',
					borderColor: '#E8E8E8',
				},
				fillerColor: '#E8E8E8',
				borderColor: 'transparent',
				dataBackground: {
					areaStyle: {
						opacity: 0
					},
					lineStyle: {
						color: 'transparent'
					},
				},
			}],
			// tooltip: {
			// 	trigger: 'item',
			// 	formatter: (p) => {
			// 		console.log(p, 'pppppppp')
			// 		if (p.seriesName === 'total') {
			// 			return ''
			// 		}
			// 		return `${p.name}`
			// 	}
			// },
			grid: {
				top: '3%',
				left: 15,
				right: 50,
				bottom: -15,
			},
			xAxis: {
				type: 'value',
				show: false,
			},
			yAxis: {
				type: 'category',
				inverse: true,
				axisLabel: {
					show: true,
					margin: 15,
					textStyle: {
						color: '#fff',
						fontSize: 14,
					},
					// 调整左侧文字的3个属性,缺一不可
					verticalAlign: 'bottom',
					align: 'top',
					//调整文字上右下左
					padding: [0, 0, 5, 15],
					rich: {
						lg1: {
							color: '#06bfcc', // 前序号和名称的颜色
							fontSize: 12,
							lineHeight: 20,
							fontStyle: 'italic', // 斜体
							fontWeight: '1000'
						},
						lg2: {
							color: '#ffffff', // 数字的颜色
							fontSize: 12,
							lineHeight: 20,
						},
					},
					formatter: function (name) {
						const arr = name.split('.');
						return `{lg1|${arr[0]}} {lg2|${arr[1]}}`;
					},
				},
				axisTick: 'none',
				axisLine: 'none',
				data: dataArry.map(item => item.labelName)
			},
			series: [
				{
					type: 'bar',
					barWidth: 7,
					z: 2,
					zlevel: 2,
					stack: 'bar', // 添加堆叠属性
					itemStyle: {
						color: {
							x: 1,
							y: 0,
							x2: 0,
							y2: 0,
							// colorStops: [{
							// 	offset: 0,
							// 	color: '#2faefd' // 0% 处的颜色
							// }, {
							// 	offset: 1,
							// 	color: '#32d4c1' // 100% 处的颜色
							// }],
						},
						color: function (params) {
							var colors = ['#2fb3fb', '#257fd5', '#43b2fd', '#24a9b1', '#5d71fc', '#5b72fc', '#2134b3']; // 定义颜色数组
							var colorstwo = ['#32d5bf', '#298de3', '#42b1fd', '#22aaaf', '#445efc', '#4660fc', '#2132b0']; // 定义颜色数组
							var index = params.dataIndex % colors.length; // 根据数据索引获取对应的颜色下标
							return {
								x: 1,
								y: 0,
								x2: 0,
								y2: 0,
								colorStops: [
									{
										offset: 0,
										color: colors[index] // 动态获取渐变起始颜色
									},
									{
										offset: 1,
										color: colorstwo[index] // 动态获取渐变结束颜色
									}
								]
							};
						}
					},
					label: {
						show: true,
						position: "right",
						fontSize: 11,
						color: "#11dcef",
						verticalAlign: 'bottom',
						padding: [0, 0, 2, 0],
						formatter: function (params) {
							return dataArry[params.dataIndex].percentage;
						},
					},

					data: dataArry.map(item => item.value),
				},
				{
					name: "背景",
					type: "bar",
					barGap: "-100%",
					stack: 'bar', // 添加堆叠属性
					data: Array(dataArry.length).fill(0),
					barWidth: 7,
					itemStyle: { color: '#15326C' },
					z: 0,
				},
				// 最后的堆叠柱子
				{
					name: "景点景区游客接待量排名",
					type: "bar",
					stack: 'total', // 添加堆叠属性
					barWidth: 7,
					z: 3,
					label: {
						show: true,
						position: "right",
						fontSize: 16,
						color: "#ffffff",
						verticalAlign: 'bottom',
						padding: [0, 0, -5, 0],
						formatter: function (params) {
							return dataArry[params.dataIndex].total;
						},
					},
					data: dataArry.map(item => fixedTotal),
					itemStyle: {
						barBorderRadius: 4,
						color: {
							x: 1,
							y: 0,
							x2: 0,
							y2: 0,
							colorStops: [{
								offset: 0,
								color: '#092d5d'
							}, {
								offset: 1,
								color: '#092d5d'
							}],
						},
					},
				}
			],
		};
		myChartThree.setOption(option);
		window.onresize = function () {
			// 自适应大小
			myChartThree.resize();
		};
	}, 200);
};

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

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

相关文章

PyTorch官网demo解读——第一个神经网络(3)

上一篇:PyTorch官网demo解读——第一个神经网络(2)-CSDN博客 上一篇文章我们讲解了第一个神经网络的模型,这一篇我们来聊聊梯度下降。 大佬说梯度下降是深度学习的灵魂;梯度是损失函数(代价函数&#xff…

百度百科词条编辑需要提供参考资料,那么如何找参考资料呢。

百度百科相信大家都不陌生,在查询一个概念、新事物,或者我们想要了解的企业和人物时,我们一般都会求助百度百科,因为百度百科上面的信息相较于其他平台更值得我们相信。从词条所属主体来说,百度百科平台也是向其他用户…

20231224解决outcommit_id.xml1 parser error Document is empty的问题

20231224解决outcommit_id.xml1 parser error Document is empty的问题 2023/12/24 18:13 在开发RK3399的Android10的时候,出现:rootrootrootroot-X99-Turbo:~/3TB/Rockchip_Android10.0_SDK_Release$ make installclean PLATFORM_VERSION_CODENAMEREL…

Ubuntu18.04安装GTSAM库(亲测可用)

在SLAM(Simultaneous Localization and Mapping)和SFM(Structure from Motion)这些复杂的估计问题中,因子图算法以其高效和灵活性而脱颖而出,成为图模型领域的核心技术。GTSAM(Georgia Tech Smo…

不用再找了,这就是 NLP 方向最全面试题库

大家好,本篇文章总结了自然语言处理(NLP)面试需要准备的学习笔记与资料,该资料目前包含自然语言处理各领域的面试题积累。 热门面试题(校招、社招)、公司级专项真题、大厂常考题等,在我们社群具有总结,喜欢…

DevC++ easyx实现视口编辑,在超过屏幕大小的地图上画点,与解决刮刮乐bug效果中理解C语言指针的意义

继上篇文案, DevC easyx实现地图拖动,超过屏幕大小的巨大地图的局部显示在屏幕的方法——用悬浮窗的原理来的实现一个视口-CSDN博客 实现了大地图拖动,但是当时野心不止,就想着一气能搓啥就继续搓啥,看着地图移动都搓…

转录组无参比对教程

写在前面 2023年将结束,小杜的生信笔记分享个人学习笔记也有2年的时间。在这2年的时间中,分享算是成为工作、学习和生活中的一部分。自己为了运行和维护社群也算花费大量的时间和精力,自己认为还算满意吧。对于个人来说,自己一直…

Docker介绍、常用命令与操作

Docker介绍、常用命令与操作 学习前言为什么要学习DockerDocker里的必要基础概念常用命令与操作1、基础操作a、查看docker相关信息b、启动或者关闭docker 2、容器操作a、启动一个镜像i、后台运行ii、前台运行 b、容器运行情况查看c、日志查看d、容器删除 3、镜像操作a、镜像拉取…

使用 Docker 部署企业培训系统 PlayEdu

1)PlayEdu 介绍 官网:https://www.playedu.xyz/ GitHub:https://github.com/PlayEdu/PlayEdu PlayEdu 是一款适用于搭建内部培训平台的开源系统,旨在为企业/机构打造自己品牌的内部培训平台。PlayEdu 基于 Java MySQL 开发&…

C语言--直接插入排序【排序算法|图文详解】

一.直接插入排序介绍🍗 直接插入排序又叫简单插入排序,是一种简单直观的排序算法,它通过构建有序序列,对于未排序的数据,在已排序序列中从后向前扫描,找到相应位置并插入。 算法描述: 假设要排序…

Golang实现JAVA虚拟机-运行时数据区

一、运行时数据区概述 JVM学习: JVM-运行时数据区 运行时数据区可以分为两类:一类是多线程共享的,另一类则是线程私有的。 多线程共享的运行时数据区需要在Java虚拟机启动时创建好,在Java虚拟机退出时销毁。对象实例存储在堆区类信…

2023.12.22 关于 Redis 数据类型 String 常用命令

目录 引言 String 类型基本概念 SET & GET SET 命令 GET 命令 MSET & MGET MSET 命令 MGET 命令 SETNX & SETEX & PSETEX SETNX 命令 SETEX 命令 PSETEX 命令 计数命令 INCR 命令 INCRBY 命令 DECR 命令 DECRBY 命令 INCRBYFLOAT 命令 总结…

【GoLang】Go语言几种标准库介绍(一)

你见过哪些令你膛目结舌的代码技巧? 文章目录 你见过哪些令你膛目结舌的代码技巧?前言几种库bufio(带缓冲的 I/O 操作)特性示例 bytes (实现字节操作)特性示例 总结专栏集锦写在最后 前言 随着计算机科学的迅猛发展,编…

复试情报准备

英语自我介绍,介绍完老师会根据你的回答用英语问你问题,比如介绍一下你的本科学校,或者家乡什么的。计网过一遍,会问两道题。接下来是重点,我当时是根据我成绩单,问了我本科学过的科目,比如pyth…

【Docker容器精解篇 】深入探索Docker技术的概念与容器思想

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《docker容器精解篇》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、Docker 的介绍1.1 Docker 的由来1.1.1 环境不一致1.1.2 隔离性1.1.3 弹性伸缩1.1.4 学习成本 1.2 Doc…

推荐五个免费的网络安全工具

导读: 在一个完美的世界里,信息安全从业人员有无限的安全预算去做排除故障和修复安全漏洞的工作。但是,正如你将要学到的那样,你不需要无限的预算取得到高质量的产品。这里有SearchSecurity.com网站专家Michael Cobb推荐的五个免费…

网站检测有哪些好用的监测工具

目前网站监测工具良莠不齐,网站监控工具有很多,选择合适功能强大的网站监控工具,对我们的业务安全有非常大的帮助。目前市场上好用的一些网站监测工具如德迅云眼、观测云等,它们都提供了网站性能监测、安全防护、故障预警等功能&a…

天呐,我找到财务报表开发的通关密码了!

要问我们IT最不愿做的报表开发有哪些,首当其冲的一定是财务分析。我对开发财务报表这事就一个态度:只要不谈开发财务报表,我们就还是好朋友,谈了会怎样?不好意思,我会破大防。 1、财务的分析逻辑和需求&am…

Azure Machine Learning - 如何使用 GPT-4 Turbo with Vision

介绍如何在Azure中使用GPT-4 Turbo with Vision 关注TechLead,分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理…

加速计算,为何会成为 AI 时代的计算力“新宠”

随着科技的发展,处理大量数据和进行复杂计算的需求越来越高,人工智能、大数据和物联网等领域更是如此,传统的计算方式已经无法满足这些需求。因此,加速计算作为一种现代计算方式,成了必要的手段。加速计算具有前所未有…