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

ChartJS能否为次Y轴设置十进制偏移且保持双Y轴刻度比例一致

你可以通过声明固定偏移量、同步双轴步长、配合刻度回调的方式实现需求,无需手动定义所有刻度,核心逻辑如下:

  • 左侧Y轴按业务需求配置整数范围、整数步长,网格线跟随左侧轴生成
  • 右侧Y轴关闭独立网格线,范围设置为左侧范围减去固定偏移量,步长和左侧保持一致
  • 两侧轴通过ticks.callback过滤仅显示整数刻度即可

可参考如下实现代码:

// 仅需修改这几个配置项即可适配不同场景
const Y_OFFSET = 11.74; // 左侧轴偏移值
const Y1_MIN = 0; // 左侧轴最小刻度(整数)
const Y1_MAX = 15; // 左侧轴最大刻度(整数)
const Y1_STEP = 1; // 左侧轴刻度步长(整数)

var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
  type: 'line',
  data: {
    labels: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"],
    datasets: [
      // 绑定左侧Y轴的数据集(带11.74m偏移)
      {
        yAxisID: 'y-left',
        data: [11.74, 11.84, 12.24, 16.74, 15.24, 14.74, 14.99, 13.74, 13.24, 12.74]
      },
      // 绑定右侧Y轴的数据集(无偏移)
      {
        yAxisID: 'y-right',
        data: [0, 0.1, 0.5, 5, 3.5, 3, 3.25, 2, 1.5, 1]
      }
    ]
  },
  options: {
    scales: {
      yAxes: [
        {
          id: 'y-left',
          position: 'left',
          ticks: {
            min: Y1_MIN,
            max: Y1_MAX,
            stepSize: Y1_STEP,
            callback: function(value) {
              // 仅显示整数刻度
              return Number.isInteger(value) ? value : null;
            }
          }
        },
        {
          id: 'y-right',
          position: 'right',
          gridLines: {
            drawOnChartArea: false // 关闭右侧网格线,复用左侧网格线
          },
          ticks: {
            min: Y1_MIN - Y_OFFSET,
            max: Y1_MAX - Y_OFFSET,
            stepSize: Y1_STEP,
            callback: function(value) {
              // 仅显示整数刻度
              return Number.isInteger(value) ? value : null;
            }
          }
        }
      ]
    }
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:00:03