当前位置: 首页 > news >正文

echarts Y轴展示时间片段,series data数据 也是时间片段,鼠标放上去 提示框显示对应的时间片段

功能要求

        1、折线图,展示每天对应的一个时间片段

        2、echarts Y轴展示时间片段,如:['00:00','03:00','05:15']

        3、X轴展示日期,如:['xx年xx月xx日']

后端返回的数据结构,如

[{xAdate:"2024-06-15",data:"16:00",adata:"",},{xAdate:"2024-06-16",data:"05:00",adata:"",},{xAdate:"2024-06-17",data:"12:00",adata:"",},
]

效果图

代码构思

  •  通过后端返回的数据,无法实现该功能
  •  通过后端返回的时间片段,来做Y轴的展示,组合成一个新数组,同时要考虑数据的“去重”和“排序”
  •  要记录下来,后端的返回的时间片段,对应的Y轴新组合数组的索引,记录在对应天数中
注意事项 -- Y轴时间片段后端返回的是否[‘00:00’]

        没有的时候 索引要+1

Y轴如何展示时间片段

    1、第一种通过 type类型设置time 来展示

       2、 第二种通过 formatter 方法来展示

      

       3、注意事项

        Y轴要设置为整数 "minInterval:1"

         

     数据处理 ---- (重点)

// 将时间字符串转换为分钟数进行比较
converData(timeStr) {const parts = timeStr.split(':').map(Number);return parts[0] * 60 + parts[1];
}// 对时间数组去重并排序
sortTime(times) {const uniqueTimes = [...new Set(times)]; // 去重uniqueTimes.sort((a, b) => converData(a) - converData(b)); // 排序return uniqueTimes;
}

  数据处理和赋值代码

            let timeArr =[];let xAxi =[];let dataSer = [];  // 后端数据赋值let seri =[];let xAxSeri =[];// series -- 数据渲染dataSeri = '后端数据'dataSeri.forEach((item)=>timeArr.push(item.xxx); // 时间片段xAxi.push(item.xxx);// 日期});seri = this.sortTime(timeArr);if(seri.includes("00:00")){for(let i=0;i< seri.length; i++){for(let j=0;j< dataseri.length; j++){// xxx  -- 时间片段if(dataseri[j].xxx == seri[i]){// a 后端定义好一个属性存放索引dataSeri[j].a = i+1;}}}}else {for(let i=0;i< seri.length; i++){for(let j=0;j< dataseri.length; j++){// xxx  -- 时间片段if(dataseri[j].xxx == seri[i]){// a 后端定义好一个属性存放索引dataSeri[j].a = i+1;}}}}dataseri.forEach((item) =>{xAxSeri.push(item.a);});});this.$nextTick(()=>{this.yAxData= seri.includes("00:00")? seri:["00:00",...seri];this.xAxData = xAxi;this.seriesData= xAxSeri;this.init();});

echarts 整体代码

          注意 getYaxis 方法

            let option = {tooltip:{trigger:"axis"backgroundcolor:"rgba(0,22,46,.8)",,//设置背景颜色textstyle:{color:"#9ba6b4",fontsize: 14,},formatter:(item)=> {return `<span>日期:</span><span style='color:#e9f3ff'>${item[0].name}</span><br/><span>发生时间</span><span style='color:#e9f3ff'>${this.yAxData[item[0].value]}</span>`},},grid:{top:"20%",left:"5%",right:"8%",bottom:"6%",containLabel: true,},XAxis:[{type:"category",boundaryGap: false,axisLine:{show: true,linestyle:{color:"#26367A",},},splitArea:{show: false,},axisLabel:{textstyle:{color:"#fff",fontsize: 14,},},axisTick:{show: false,},splitLine:{show: false,},data: this.xAxData,},],yAxis:[{name:"时段",nameTextstyle: {color:"#fff",},type:"value',axisLine:{show: false,},axisLabel:{textstyle:{color:"#fff",fontsize:"14",},formatter:function(value,index){return this .getYaxis(value,index)},},minInterval:1,splitLine:{show: true,linestyle:{type: "dashed",color:"#6fc2f1",},},}],series :[{type: "line",data: this.seriesData,symbolsize:10,symbol:"circle",smooth: true,showSymbol: false,linestyle:{width: 2,color:"#O0ffOc",},itemstyle:{normal:{color:"#00ff0c”,linestyle:{color:"#00ff0c”,// 线的颜色},},},}],}getYaxis(value,index){const arr = this.yAxDataif(index< arr.length){return arr[index]}}

      

相关文章:

  • 【计算机毕业设计】​206校园顺路代送微信小程序
  • 基于S32K144驱动NSD8308
  • 梯度提升决策树(GBDT)的训练过程
  • P10552 [THUPC2024] 警钟长鸣
  • 【安全】Linux Fanotify使用入门
  • 计算机基础学习有多重要?学哪些?如何学?
  • 基于SpringBoot+Vue大学生网络教学平台设计和实现(源码+LW+调试文档+讲解等)
  • mongodb嵌套聚合
  • DataWhale - 吃瓜教程学习笔记(二)
  • 【ThreeJS】Threejs +Vue3 开发基础
  • ASCII 空字符 ‘\0’ ,与空格字符‘ ’
  • 【技巧】Leetcode 201. 数字范围按位与【中等】
  • 定义多个类对象,分别输入和输出各对象中的时间(时:分:秒)
  • Vue82-组件内路由守卫
  • Sourcetree:Git版本控制的最佳伴侣
  • 【Leetcode】104. 二叉树的最大深度
  • Apache的80端口被占用以及访问时报错403
  • flutter的key在widget list的作用以及必要性
  • k8s 面向应用开发者的基础命令
  • k个最大的数及变种小结
  • vue-cli在webpack的配置文件探究
  • Vue官网教程学习过程中值得记录的一些事情
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 从零开始的无人驾驶 1
  • 分布式事物理论与实践
  • 离散点最小(凸)包围边界查找
  • 前端路由实现-history
  • 微信支付JSAPI,实测!终极方案
  • 协程
  • ​数据结构之初始二叉树(3)
  • # Kafka_深入探秘者(2):kafka 生产者
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #HarmonyOS:Web组件的使用
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • #在 README.md 中生成项目目录结构
  • (16)Reactor的测试——响应式Spring的道法术器
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (四)opengl函数加载和错误处理
  • (转)ABI是什么
  • (转)Unity3DUnity3D在android下调试
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET Micro Framework 4.2 beta 源码探析
  • .NET Reactor简单使用教程
  • .NET连接MongoDB数据库实例教程
  • .NET性能优化(文摘)
  • @Bean, @Component, @Configuration简析
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • @JSONField或@JsonProperty注解使用