-
需求:x轴为时间国际值,所以需要转化成'YYYY-MM-DD HH:mm:ss'格式,又因为时间不连续,没值的时间在数组里直接返回null导致x轴其实间断的,也不需要ehcart自动补齐间断的值让他们联系在一起,所以x轴type为category。导致dataZoom的labelFormatter返回的value是百分数(当前时间值占x轴的百分比),但是由于需求特殊我们的返回的不是正规的百分比,最大值才16!,导致浪费了不少时间研究,最后相处来了,既然最大值是16那就以16为100量程,value/16*(x.length-1)就解决了,如果还是除以100 datazoom的悬浮提示的时间范围不正确
-
代码环境:vue3 ts echart5 moment.js时间转插件
-
代码
js// 后端返回的数据格式,由于不是前段需要的'YYYY-MM-DD HH:mm:ss'格式所以需要对x轴的axisLabel使用数据转化 const data = [ [ "2025-01-24T16:00:00+08:00", 0 ], null, [ "2025-02-05T10:00:00+08:00", 1 ], [ "2025-02-05T11:00:00+08:00", 11 ], [ "2025-02-05T12:00:00+08:00", 1 ], [ "2025-02-05T13:00:00+08:00", 11 ], [ "2025-02-05T14:00:00+08:00", 10 ], [ "2025-02-05T15:00:00+08:00", 1 ], null, [ "2025-02-07T09:00:00+08:00", 1 ], [ "2025-02-07T10:00:00+08:00", 11 ], ] // const getData= ()=>{ // 后端返回res echartData.value = res.data[0].data?.map(item=>item?moment(item[0]).format('YYYY-MM-DD HH:mm:ss'):null) // 生成x轴时间数组 res.data?.forEach((item,index)=>{ series.push({ type: 'line', data: item.data, }) }) Option.series= series }) const echartData = ref(null) // 设置图标配置项 const fanweiSize = ref(null) option = { // color: colors, // tooltip: { // trigger: 'axis', // axisPointer: { // type: 'cross' // } // }, // toolbox: { // feature: { // dataView: { show: true, readOnly: false }, // restore: { show: true }, // saveAsImage: { show: true } // } // }, // dataZoom: { // type: 'inside', //放大缩小x轴数值 // }, // dataZoom:[{ // type: 'inside', // 放大和缩小 // orient: 'vertical', // }, // { // type: 'inside', // }], dataZoom: [ { show: true, type: 'slider', // 滑动条型 dataZoom labelFormatter: (value) => { // 核心代码 if(!echartData.value) return const dataLength = echartData.value.length; fanweiSize.value&&fanweiSize.value!==0?null:fanweiSize.value=value // 记录首次进入页面获取的时间范围最大值 const index = Math.floor((value / fanweiSize.value) * (dataLength - 1)); // 正常是除以100的但是这里不知道哪里问题最大值只有16所以除以16就行了 // console.log((value / 16),dataLength,(value / 16) * (dataLength - 1)) const rawDate = echartData.value[index]; // console.log(value,"moment(rawDate).format('YYYY-MM-DD HH:mm:ss')",moment(rawDate).format('YYYY-MM-DD HH:mm:ss')) // 格式化时间(假设原始时间字符串已经是合法格式) return moment(rawDate).format('YYYY-MM-DD HH:mm:ss'); }, }, { type: 'inside', }, ], xAxis: { type: 'category', //time axisLabel: { formatter: function (value) { return moment(value).format('YYYY-MM-DD HH:mm:ss'); } }, axisPointer: { type: 'line', label:{ formatter: function (obj) { return moment(obj.value).format('YYYY-MM-DD HH:mm:ss'); }, } }, }, yAxis: [{ type: 'value', name: "数量", nameLocation:'end', nameGap:15, nameTextStyle:{ align:'right', }, },], series: [] };
使用echart的dataZoom的labelFormatter自定义时间范围
禾苗种树2025-02-22 10:49
相关推荐
Cache技术分享6 分钟前
219. Java 函数式编程风格 - 从命令式风格到函数式风格:迭代与数据转换豆苗学前端9 分钟前
JavaScript原型对象、构造函数、继承与类详解飞翔的佩奇11 分钟前
【完整源码+数据集+部署教程】【运动的&足球】足球比赛分析系统源码&数据集全套:改进yolo11-RFAConv支付宝体验科技14 分钟前
SEE Conf 2025:开启体验科技的新十年TeamDev16 分钟前
使用 Shadcn UI 构建 C# 桌面应用尘世中一位迷途小书童43 分钟前
Vuetify Admin 后台管理系统参宿743 分钟前
图解Vue3 响应式,手动实现核心原理2301_801252221 小时前
前端框架Vue(Vue 的挂载点与 data 数据对象)资讯第一线1 小时前
《Windows Server 2022》 [2025年10月版 ] [官方IOS] 下载非凡ghost1 小时前
EaseUS Fixo(易我视频照片修复)