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

billboard.js如何为各数据系列设置自定义标签

billboard.js 自定义数据系列标签实现方案

完全支持你要的效果:不需要依赖数据点的数值、系列id、索引值,就能给每个数据系列单独设置自定义标签,也能实现「图例显示城市名、数据标签显示国家名」的需求。

关于texts参数为空的问题

文档里提到的texts参数是billboard.js内部维护的、当前系列已渲染完成的标签文本集合,属于回调执行过程中的内部收集值,不是需要用户手动传入的配置项。在format函数执行的标签渲染阶段,这个参数本来就是空的,不需要尝试往这个参数里传自定义标签数组。

具体实现方法

你只需要提前维护好自己的标签映射关系,在按系列配置format回调时直接返回自定义文本即可,不需要用到回调里的数值、id、索引参数。
对应你业务场景的配置示例如下:

// 提前维护维度映射:key为数据系列ID(直接用城市名,图例默认读取该值显示),value为数据标签要展示的国家名
const customLabelMap = {
  beijing: "中国",
  shanghai: "中国",
  tokyo: "日本",
  seoul: "韩国",
  paris: "法国"
}

bb.generate({
  data: {
    columns: [
      ["beijing", 120, 180, 220, 90],
      ["shanghai", 150, 200, 190, 130],
      ["tokyo", 80, 60, 110, 75],
      ["seoul", 70, 95, 84, 102],
      ["paris", 110, 88, 130, 99]
    ],
    labels: {
      format: {
        // 每个系列直接返回对应自定义标签即可,不需要读取回调参数
        beijing: () => customLabelMap.beijing,
        shanghai: () => customLabelMap.shanghai,
        tokyo: () => customLabelMap.tokyo,
        seoul: () => customLabelMap.seoul,
        paris: () => customLabelMap.paris
      }
    }
  },
  bindto: "#chartContainer"
})

如果你的数据系列是动态生成的,不需要手写每个系列的format配置,只要在生成图表配置前,遍历原始数据列表动态拼接format对象即可。

扩展:同系列不同数据点显示不同自定义标签

如果后续需要同一个系列下的不同数据点显示不同文本,只需要把映射结构调整为按索引存文本的数组,在回调里读取第三个参数(数据点索引i)返回对应值即可,同样不需要依赖数据本身的数值:

const pointLabelMap = {
  beijing: ["一季度", "二季度", "三季度", "四季度"]
}

// 对应format配置
format: {
  beijing: (v, id, i) => pointLabelMap.beijing[i]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:51:37