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

billboard.js自定义索引标签替换0-n序列为日期的实现问题

解决方案

你直接修改onover回调返回的d对象会触发报错的核心原因是:d是billboard.js内部用于数据计算、坐标渲染的只读实例,直接修改属性会破坏内部校验和运算逻辑,完全不推荐这种实现方式。

最优方案:用官方配置自定义Tooltip标题

billboard.js提供了原生的tooltip格式化配置,不需要修改内部数据即可自定义悬浮展示的x轴标签:

// 提前提取日期索引映射
const dateMap = ajax_result.data.map(item => item.My_Index)

bb.generate({
  // 其余基础配置保持不变
  tooltip: {
    format: {
      title: function(x) {
        // x为默认的0-n索引,直接返回对应日期即可
        return dateMap[x]
      }
    }
  }
})

可选方案:初始化时直接配置x轴为分类轴

如果希望x轴刻度直接显示日期而非0-n索引,初始化时直接指定x轴为分类类型即可:

const dateList = ajax_result.data.map(item => item.My_Index)

bb.generate({
  data: {
    columns: [
      // 你的y轴数据列
      ['data1', 30, 200, 100, 400, 150, 250]
    ]
  },
  axis: {
    x: {
      type: 'category',
      categories: dateList,
      // 日期较多时可旋转刻度避免重叠
      tick: {
        rotate: 45
      }
    }
  }
})

特殊场景:onover回调内获取选中日期的正确写法

如果需要在悬浮时同步更新图表外的日期展示,不要修改d对象本身,直接读取索引取对应日期即可:

onover: function(d, element) {
  const selectedDate = ajax_result.data[d.index].My_Index
  // 仅用于外部逻辑,不修改d对象
  document.querySelector('#current-date').textContent = selectedDate
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:15:08