echarts绘制自定义展示排名和数据等信息(数据排名进度条)

目录

一、结构分析

二、配置图表各部分

1.名称及排序

2.进度条绘制

3.数据末端圆形绘制

(1)基本配置

(2)数据

(3)坐标轴配置

(4)点的样式

(5)项的样式(itemStyle)

(6)层级配置

三、示例代码


最终实现的样子:

一、结构分析

根据UI设计图,要实现如图效果的横向排列表

开始想用elementui进度条组件,但是它不够能定义太多的样式(如渐变、数据末端圆形等)。因为觉得麻烦,也不想用原生的html\css\js书写,所以还是采用echarts绘制。

想这个分为两部分:左侧名称,右侧进度条及数据展示,并没有思路不知如何下手。

参考了一位博主大大的文:echarts横向进度条-CSDN博客

思路有了:就如这位博主的思路,通过 ECharts 创建了一个包含多个 y 轴、渐变条形图、背景条形图和散点数据点完成这个效果。

二、配置图表各部分

1.名称及排序

都是常用的一些属性

grid:设置图表的内边距。

xAxis:隐藏 x 轴。

yAxis:定义了多个 y 轴,分别用于:显示地区名称、显示排序(数字)等

series:定义了多个图表的数据系列,包括条形图系列,用于显示每个地区的数据条。另一个条形图系列,用作进度条的背景......

let option={// 间距grid: {left: '10%',top: '10%',right: '10%',bottom: '10%',containLabel: true},xAxis: [{show: false,}],// 名称yAxis: [{axisTick: 'none',axisLine: 'none',offset: '20',axisLabel: {textStyle: {color: '#8CBAEE',fontSize: '12',}},data: ['大足区', '秀山县', '涪陵区', '万州区', '忠县']}, // 排序{axisTick: 'none',axisLine: 'none',axisLabel: {textStyle: {color: 'red',fontSize: '12',}},data: ['5', '4', '3', '2', '1']},{axisLine: {lineStyle: {color: 'rgba(0,0,0,0)'}},data: [],}],
}

2.进度条绘制

柱状图模拟进度条

        series: [// 数据{name: '条',type: 'bar',yAxisIndex: 0,data: [900, 470, 850, 610, 340],label: {normal: {show: true,position: 'right',textStyle: {color: '#ffffff',fontSize: '12',}}},barWidth: 4,itemStyle: {normal: {color: function (params) {let colorList = [['#0A083A', '#5F74E9','#A03EF5'],['#0A083A', '#33A6FF','#07C1FE'],['#0A083A', '#4A6DEB','#20B3F9'],['#0A083A', '#496EF2','#AE2EFD'],['#0A083A', '#895ADE','#D987C5'],]let index = params.dataIndex % colorList.length; //确保索引在colorList的范围内循环return new echarts.graphic.LinearGradient(0, 0, 1, 1, [{offset: 0,color: colorList[index][0]},{offset: 0.4,color: colorList[index][1]},{offset: 1,color: colorList[index][2]}]);}}},z:2}, // 进度条背景{name: '背景',type: 'bar',yAxisIndex: 1,data: [1000,1000,1000,1000,1000], // 总数据,可动态绑定barWidth: 6,itemStyle: {normal: {color: 'blue',barBorderRadius: 10,}},z: 1}, ]

3.数据末端圆形绘制

echarts官网scatter:Documentation - Apache ECharts

(1)基本配置

name: 图表的名称。

type: 图表的类型,这里是'scatter',表示这是一个散点图。

hoverAnimation: 设置为false,表示鼠标悬停在数据点上时,数据点不会有动画效果。

(2)数据

data: 这是一个数组,包含了散点图中所有点的坐标。每个点由两个值组成,分别代表X轴和Y轴的坐标。例如,[340, 4]表示一个点的X坐标为340,Y坐标为4。

(3)坐标轴配置

yAxisIndex: 设置为0,表示这个散点图使用图表中第一个Y轴。这在图表中有多个Y轴时特别有用,确保散点图与特定的Y轴对应。

(4)点的样式

symbol: 设置为'circle',表示散点图中的点使用圆形符号。

symbolSize: 设置为6,表示每个圆形符号的大小。

(5)项的样式(itemStyle

这里只设置了color: 这是一个函数,用于动态设置每个点的颜色。函数接受一个参数params,其中params.dataIndex是当前数据点的索引。根据这个索引,函数从一个颜色数组colors中选择一个颜色返回。

(6)层级配置

z: 设置为4,这用于控制图表的堆叠顺序。在ECharts中,数值越大的系列(series)会被绘制在数值较小的系列之上。

三、示例代码

其他样式在调整下,在从后端获取数据,就跟UI图大差不差了。以下是我实现效果图与示例代码,可供参考:

完整代码如下:

    getholdTop(){let holdTopDom = document.getElementById("showprogress");this.holdTop = echarts.init(holdTopDom);let option={// 间距grid: {left: '10%',top: '10%',right: '10%',bottom: '10%',containLabel: true},xAxis: [{show: false,}],// 名称yAxis: [{axisTick: 'none',axisLine: 'none',offset: '20',axisLabel: {textStyle: {color: '#8CBAEE',fontSize: '12',}},data: ['大足区', '秀山县', '涪陵区', '万州区', '忠县']}, ],series: [// 数据{name: '条',type: 'bar',yAxisIndex: 0,data: [900, 470, 850, 610, 340],label: {normal: {show: true,position: 'right',textStyle: {color: '#ffffff',fontSize: '12',}}},barWidth: 4,itemStyle: {normal: {color: function (params) {let colorList = [['#0A083A', '#5F74E9','#A03EF5'],['#0A083A', '#33A6FF','#07C1FE'],['#0A083A', '#4A6DEB','#20B3F9'],['#0A083A', '#496EF2','#AE2EFD'],['#0A083A', '#895ADE','#D987C5'],]let index = params.dataIndex % colorList.length; //确保索引在colorList的范围内循环return new echarts.graphic.LinearGradient(0, 0, 1, 1, [{offset: 0,color: colorList[index][0]},{offset: 0.4,color: colorList[index][1]},{offset: 1,color: colorList[index][2]}]);}}},z:2}, // 散点圆圈{name: '数据点',type: 'scatter',hoverAnimation: false,data: [[340, 4], // 需要x|y坐标来定位点[610, 3],[850, 2],[470, 1],[900, 0]],yAxisIndex: 0, // 使用与条形图相同的y轴symbol: 'circle', // 使用圆形符号symbolSize: 6, // 调整圆点的大小itemStyle: {color: function (params) {let colors = ['#D987C5', '#AE2EFD', '#20B3F9', '#07C1FE', '#A03EF5'];return colors[params.dataIndex];}},z: 4},{name: '数据点',type: 'scatter',hoverAnimation: false,data: [[340, 4],[610, 3],[850, 2], [470, 1], [900, 0] ],yAxisIndex: 0,symbol: 'circle',symbolSize: 12,itemStyle: {color: function (params) {let colors = ['rgba(217,135,197,0.5)', 'rgba(147,46,253,0.5)', 'rgba(32,172,249,0.5)', 'rgba(7,193,254,,,0.5)', 'rgba(160,62,245,0.5'];return colors[params.dataIndex];}},z: 3}]};option&&this.holdTop.setOption(option);},

若文章对你有帮助,点赞、收藏加关注吧!

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

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

相关文章

独家原创 | CEEMDAN-CNN-GRU-GlobalAttention + XGBoost组合预测

往期精彩内容: 时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较 全是干货 | 数据集、学习资料、建模资源分享! EMD变体分解效果最好算法——CEEMDAN(五)-CSDN博客 拒绝信息泄露!VMD滚动分…

数据仓库-基于角色的权限管理(RBAC)

什么是基于角色的用户管理? 基于角色的用户管理(Role-Based Access Control,简称RBAC)是通过为角色赋予权限,用户通过成为适当的角色而得到这些角色的权限。 角色是一组权限的抽象。 使用RBAC可以极大简化对权限的管理。 什么是RBAC模型&…

鸿蒙调试打包(非正式打包)

文章目录 前言第一步:生成.p12和.csr文件第二步:申请证书的前置步骤第三步:申请证书 前言 HarmonyOS 应用打包后的文件为.app 格式, android 打包后的文件为.apk,IOS 打包后的文件为.apa HarmonyOS通过数字证书&#…

警惕!手动调整服务器时间可能引发的系统灾难

警惕!手动调整服务器时间可能引发的系统灾难 1. 鉴权机制1.1 基于时间戳的签名验证1.2 基于会话的认证机制(JWT、TOTP) 2. 雪花算法生成 ID 的影响2.1 时间戳回拨导致 ID 冲突2.2 ID 顺序被打乱 3. 日志记录与审计3.1 日志顺序错误3.2 审计日…

Java基础学习:java常用启动命令

一、java -jar 1、系统属性传递 使用形式:java -DpathD:\jacoco -jar 获取方式:System.getProperties() 2、系统参数传递 使用形式:java -jar application.jar --jacocoPathD:\tomcat 获取方式:通过启动方法入口main的参数arg…

STT语音识别转文字工具 - 离线运行的本地语音识别服务

STT - 强大的离线语音识别转文字工具 STT是一款功能强大的本地语音识别转文字工具,基于fast-whisper开源模型开发,可以将视频和音频中的人声识别并转换为文字。它支持多种输出格式,包括JSON、带时间戳的SRT字幕以及纯文本格式,为用户提供了灵活的选择。 主要特点 完全离线运…

学习maven(添加依赖坐标,maven的常用命令,依赖传递,解决依赖冲突)

目录 前言 添加依赖坐标 maven 的常用命令 如下图所示:重点是标红的 如何使用这些maven的常用命令呢? 实例 maven常用的命令可以在IDEA中有自带插件来完成 打开IDEA的命令行终端 依赖传递 什么是依赖传递呢? 解决依赖冲突问题 什么…

远程控制电脑技术让我们的生活更加简化

在忙碌的现代生活节奏下,远程控制电脑技术已经成为我们生活中不可或缺的一部分。无论是在家办公,还是在旅途中需要紧急处理工作,远程控制电脑都能为我们提供极大的便利。今天,我们就来聊聊远程控制电脑技术是如何简化我们的生活&a…

【MySQL数据库】Ubuntu下的mysql

目录 1,安装mysql数据库 2,mysql默认安装路径 3,my.cnf配置文件 4,mysql运用的相关指令及说明 5,数据库、表的备份和恢复 mysql是一套给我们提供数据存取的,更加有利于管理数据的服务的网络程序。下面…

HarmonyOS:使用Grid构建网格

一、概述 网格布局是由“行”和“列”分割的单元格所组成,通过指定“项目”所在的单元格做出各种各样的布局。网格布局具有较强的页面均分能力,子组件占比控制能力,是一种重要自适应布局,其使用场景有九宫格图片展示、日历、计算器…

(一)强化学习基础概念及学习路径

目录 前言 一、强化学习是什么? 二、强化学习中的基本概念 1.状态 2.动作 3.奖励 4.策略 5.智能体 6.环境 7.智能体与环境交互 三、强化学习路径 总结 前言 强化学习(Reinforcement Learning, RL)是机器学习的范式和方法论之一&a…

六西格玛DMAIC在企业得项目管理中有什么作用

六西格玛(Six Sigma)是一种以数据为基础的管理方法,旨在通过减少缺陷和变异来提高过程质量和效率。DMAIC 是六西格玛中一种常用的改进方法论,适用于现有过程的改进。DMAIC 代表五个阶段:定义(Define&#x…

【C++】简单计算器问题的深度解析与优化对比

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯问题描述💯实现 1:我的实现代码分析优点不足 💯实现 2:老师的第一种实现代码分析优点不足 💯实现 3:…

Spire.PDF for .NET【页面设置】演示:向 PDF 文档添加页码

在 PDF 文档中添加页码不仅实用,而且美观,因为它提供了类似于专业出版材料的精美外观。无论您处理的是小说、报告还是任何其他类型的长文档的数字副本,添加页码都可以显著提高其可读性和实用性。在本文中,您将学习如何使用Spire.P…

开疆智能Ethernet/IP转Profinet网关连接纳博特控制器配置案例

该案例是西门子PLC通过开疆智能研发的Ethernet/IP转Profinet网关KJ-PNG-108连接纳博特控制器的配置案例首先下载控制器的EDS文件,解析出其中的ethernet参数. 将EDS文件导入解析软件,透过软件可以看到数据长度默认为32字节,连接点为150/100 打…

【含开题报告+文档+PPT+源码】基于SpringBoot+Vue的移动台账管理系统

开题报告 个人财务管理系统的意义在于提高个人财务管理的效率,实现财务稳定,增强经济安全感。收支管理是每个个人和个人组织不可缺少的工作,也是个人财务管理中不可或缺的研究对象。通过信息化地收集和处理收支信息,减少手工记录…

车牌识别OCR授权:助力国产化升级,全面提升道路监控效率

政策背景:国产化升级,推动道路监控产业转型 随着国家对信息安全的重视,国内各大公安、政企机构已进入全面升级国产化平台的实施阶段。根据最新的政策要求,公安和政府部门必须在未来三年内完成平台的国产化替换工作。这一举措不仅…

【算法】【优选算法】哈希表

目录 一、简介二、两数之和三、⾯试题 01.02.判定是否互为字符重排四、217.存在重复元素五、219.存在重复元素 II六、49.字⺟异位词分组 一、简介 哈希表就是一个使用键值对key-value来存储数据的容器。 用于快速查找某个元素O(1)时间复杂度。 应用场景: 频繁查找…

Please activate LaTeX Workshop sidebar item to render the thumbnail of a PDF

Latex代码中使用pdf图片,无法预览,提示: Please activate LaTeX Workshop sidebar item to render the thumbnail of a PDF 解决办法: 点击左边这个刷新下即可

uniapp结合movable-area与movable-view实现拖拽功能

前言 因为公司业务开发需要拖拽功能。 ps&#xff1a;该功能只能针对高度一致的&#xff0c;如果高度不一致需要另外二开 演示 开始 <template><view style"height: 100%;"><movable-area :style"{width: 100%, height: allHeight px}"…