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

ECharts Y轴5等分终极解决方案 - 动态适配缩放场景

问题背景

在ECharts可视化项目中,实现Y轴5等分是一个常见需求。网上大多数案例都是初始计算出最大值maxValue,然后设置interval = maxValue/5。

但这种方法存在一个问题:在有滚动条的场景下,可视区域数据的最大值并不是初始所有数据的最大值。

解决方案

ECharts的yAxis.max属性支持多种格式:

  • number
  • string
  • Function

我们需要使用函数形式:

max: function(val) {// val包含可视区域的最小值和最大值return getMaxValue(val.max);
}

核心算法实现

function getMaxValue(val) {const len = String(val).length;const logVal = Math.pow(10, len);let maxValue = logVal;if (Number(val) === Math.pow(10, len - 1)) {maxValue = logVal;} else {for (let i = 3; i >= 1; i--) {if (val <= logVal * i / 4) {maxValue = logVal * i / 4;}}}return maxValue;
}

算法说明

  1. 根据value长度取得可能的最大值:以10为底,字符长度次方。例如225 → 1000
  2. 判断是否为1、10、100、1000等情况,这些情况最大值就是自身
  3. 其他情况,判断最大值的3/4、2/4、1/4,取与value最接近又能在ECharts中5等分的最大值

计算示例:225

  • 225 ≠ 1000 → 1000
  • 225 ≤ 750 → 750
  • 225 ≤ 500 → 500
  • 225 ≤ 250 → 250

完整示例代码

// 生成测试数据
let base = +new Date(1988, 9, 3);
let oneDay = 24 * 3600 * 1000;
let data = [[base, Math.random() * 300]];
for (let i = 1; i < 20000; i++) {let now = new Date((base += oneDay));data.push([+now, Math.round((Math.random() - 0.5) * 20 + data[i - 1][1])]);
}// 获取5等分最大值函数
function getMaxValue(val) {const len = String(val).length;const logVal = Math.pow(10, len);let maxValue = logVal;if (String(val) === Math.pow(10, len - 1)) {maxValue = logVal;} else {for (let i = 3; i >= 1; i--) {if (val <= logVal * i / 4) {maxValue = logVal * i / 4;}}}return maxValue;
}// ECharts配置项
const option = {tooltip: {trigger: 'axis',position: function (pt) {return [pt[0], '10%'];}},title: {left: 'center',text: 'Large Area Chart'},toolbox: {feature: {dataZoom: {yAxisIndex: 'none'},restore: {},saveAsImage: {}}},xAxis: {type: 'time',boundaryGap: false},yAxis: {type: 'value',boundaryGap: [0, '100%'],min: 0,max: function(value) {return getMaxValue(value.max);}},dataZoom: [{type: 'inside',start: 0,end: 20},{start: 0,end: 20}],series: [{name: 'Fake Data',type: 'line',smooth: true,symbol: 'none',areaStyle: {},data: data}]
};

实现效果

  1. 动态计算Y轴最大值,确保在任何缩放状态下都能保持5等分
  2. 支持大数据量场景下的平滑缩放
  3. 自动适应不同数值范围

 ECharts Y轴5等分终极解决方案 - 动态适配缩放场景 - 高质量源码分享平台-免费下载各类网站源码与模板及前沿技术分享

http://www.lryc.cn/news/616089.html

相关文章:

  • 计算机网络:(十四)传输层(下)详细讲解TCP报文段的首部格式,TCP 可靠传输的实现与TCP 的流量控制
  • 一些js数组去重的实现算法
  • Android的事件分发流程、Kotlin协程、4大组件、Handler机制、架构设计、性能优化、内存泄漏
  • 系统架构设计师备考之架构设计高级知识
  • Flink提交流程全解析:从模式到实践
  • DevOps:从GitLab .gitlab-ci.yml 配置文件到CI/CD
  • [论文阅读] 人工智能 + 软件工程 | 大型语言模型对决传统方法:多语言漏洞修复能力大比拼
  • FlinkSQL Joins全解析
  • 从MySQL到大数据平台:基于Spark的离线分析实战指南
  • Spark学习(Pyspark)
  • 在VMware中安装统信UOS桌面专业版
  • 可视化程序设计(4) - 第一个图形窗口程序
  • Python元组
  • 计算XGBoost分类模型的错误率
  • Qt 框架全面解析:从基础到应用
  • 基于C语言(兼容C++17编译器)的记账系统实现
  • CompletableFuture实现Excel sheet页导出
  • RabbitMQ面试精讲 Day 19:网络调优与连接池管理
  • GitHub上为什么采用Gradle编译要多于Maven
  • Excel合并同步工具V1.0
  • Pytorch深度学习框架实战教程10:Pytorch模型保存详解和指南
  • Spring Boot集成WebSocket
  • Spring Boot与WebSocket构建物联网实时通信系统
  • Android Intent 解析
  • Leetcode 3644. Maximum K to Sort a Permutation
  • 数学建模——回归分析
  • 香橙派 RK3588 部署 DeepSeek
  • 【2025CVPR-图象分类方向】ProAPO:视觉分类的渐进式自动提示优化
  • 【Linux】通俗易懂讲解-正则表达式
  • WAIC2025逛展分享·AI鉴伪技术洞察“看不见”的伪造痕迹