You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ECharts如何配置y轴缩放时忽略指定数据系列

实现方案

如果你的项目使用的ECharts版本不低于5.3.0,直接用官方内置配置就能实现,是成本最低的方案;低版本可以根据场景选择手动定轴范围或者双轴隔离的兼容方案。


方案一:原生配置直接忽略指定系列(v5.3.0及以上支持)

ECharts 5.3.0版本专门新增了series.ignoreAxisExtent配置项,就是为了解决「部分系列不参与坐标轴范围计算」的需求。你只需要给不需要纳入y轴缩放计算的系列加上这个配置,设为true即可,坐标轴自动算范围的时候会直接跳过这个系列的所有数值,不需要额外改逻辑、手动算极值。
对应你举的例子,核心配置如下:

option = {
  xAxis: {
    type: 'category',
    data: [0, 1, 2, 3]
  },
  yAxis: {
    type: 'value'
    // 不需要手动写min、max,自动计算时会自动跳过B系列
  },
  series: [
    {
      name: 'A',
      type: 'line', // 所有系列类型(折线、柱状、散点等)都支持这个配置
      data: [10, 20, 30, 40]
      // 配置默认是false,正常参与范围计算
    },
    {
      name: 'B',
      type: 'line',
      data: [1, 10, 100, 1000],
      ignoreAxisExtent: true // 关键配置:告诉坐标轴计算范围时忽略当前系列
    }
  ]
}

跑起来之后y轴范围会刚好覆盖A系列的10-40区间,B系列超过40的部分会自然超出绘图区顶部,和你预期的效果完全一致。


方案二:手动指定y轴范围(全版本兼容,实现最简单)

如果用的ECharts版本低于5.3.0,且数据是静态的,可以直接算出要参与计算的系列的极值,手动赋值给y轴的min和max,不需要额外加配置:

// 拿出需要参与范围计算的A系列数据
const seriesAData = [10, 20, 30, 40]
// 计算极值,要是不想图形贴到轴边,可以给min减一点、max加一点留边距
const yMin = Math.min(...seriesAData)
const yMax = Math.max(...seriesAData)

option = {
  xAxis: {
    type: 'category',
    data: [0, 1, 2, 3]
  },
  yAxis: {
    type: 'value',
    min: yMin,
    max: yMax
  },
  series: [
    { name: 'A', type: 'line', data: seriesAData },
    { name: 'B', type: 'line', data: [1, 10, 100, 1000] }
  ]
}

注意:如果图表开了dataZoom区域缩放功能,用这个方案需要监听dataZoom事件,实时算当前可视范围内A系列的极值,更新y轴的min、max,不然缩放时轴范围不会跟着变。


方案三:双轴隔离(适合动态数据、带缩放的低版本场景)

要是图表有动态缩放、数据频繁更新的需求,低版本下可以用双轴的逻辑实现自动计算范围,不用每次数据变了都手动算极值:

  • 准备两个y轴,第一个是正常显示的主轴,只绑定A系列,自动计算范围
  • 第二个是完全隐藏的副轴,绑定B系列,不显示任何轴线、刻度
  • 每次图表重绘后把副轴的min、max同步成和主轴一致,保证B系列的坐标映射和主轴对齐
    核心配置示例:
const option = {
  xAxis: { type: 'category', data: [0, 1, 2, 3] },
  yAxis: [
    { type: 'value', show: true }, // 主轴,索引0,绑定A系列
    { type: 'value', show: false } // 副轴,索引1,绑定B系列,完全隐藏
  ],
  series: [
    { name: 'A', type: 'line', data: [10, 20, 30, 40], yAxisIndex: 0 },
    { name: 'B', type: 'line', data: [1, 10, 100, 1000], yAxisIndex: 1 }
  ]
}

// 监听渲染完成事件,同步副轴范围和主轴一致
chart.on('finished', () => {
  const mainAxisModel = chart.getModel().getComponent('yAxis', 0)
  const [scaleMin, scaleMax] = mainAxisModel.axis.scale.getExtent()
  chart.setOption({
    yAxis: [{}, { index: 1, min: scaleMin, max: scaleMax }]
  })
})

内容的提问来源于stack exchange,提问作者deanWombourne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 11:36:21