echarts 实战 : 恼人的间隔问题
使用 echarts 的时候,可能我们需要这个图表的间隔是固定的。比如 3个 4个 5个。
(注意计算间隔数量的时候是不算 x轴 本身的。)
这个问题看似简单,其实有点麻烦。
yAxis.splitNumber number [ default: 5 ] 坐标轴的分割段数,需要注意的是这个分割段数只是个预估值,最后实际显示的段数会在这个基础上根据分割后坐标轴刻度显示的易读程度作调整。 在类目轴中无效。
但其实这个设置可能并不管用。
因为 echarts 会根据你喂给她的数据自动判断应该有几个刻度,很多时候,你设置了3个,她却给你整了5个。
那么就只能自己设置 interval 和 max 了。
yAxis.max number, string [ default: null ] 坐标轴刻度最大值。 可以设置成特殊值 'dataMax',此时取数据在该轴上的最大值作为最大刻度。
max 直接这样也是可以的,但是要考虑到除不尽时刻度线不是整数的问题,所以还是自己算吧。
getYInterval = (arr, settingData) => { const returnError = () => { return { interval:undefined, max:undefined } } let max = 0 let interval = 0 const standand = settingData.yInterval ? settingData.yInterval : 3 if (!arr) { return returnError() } try { arr.forEach(item => { if (!item.data) { throw new Error() } item.data.forEach(child => { max = Math.max(max, child) }) }) } catch (e) { return returnError() } interval = max / standand if (interval !== parseInt(interval)) { interval = Math.ceil(interval) max = interval * standand } return { interval, max } }
几个要点。
- 用 try catch 和 判断 防止 前端框架(react)报错。
- 刻度数量 standand 有默认的,也可以传进去。
- 如果遇到除不尽的情况,就通过向上取整的方式重新设置 interval 和 max 。
然后在渲染时使用这个方法。
// ... let yInterval let yMax if (settingData.xyType === "x") { const obj = this.getYInterval(normalData.sData, settingData) yInterval = obj.interval yMax = obj.max } // ... yAxisExtraData = { axisLabel:{ show:true, textStyle:{ color:'rgba(9,178,215,1)', fontSize:16 } }, axisLine:{ show:false, lineStyle:{ color:'rgba(9,178,215,1)', } }, splitLine: { lineStyle:{ color: 'rgba(45,57,75,1)' } }, axisTick:{ show:false }, splitNumber:3, minInterval:1, interval:yInterval, max:yMax }
以上。
分类:
web数据可视化
posted on 2019-11-17 09:54 fox_charon 阅读(7635) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~