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

Highcharts桑基图节点Tooltip报错:无法获取series属性

解决Highcharts桑基图节点悬停Tooltip报错问题

我之前也踩过这个坑!你遇到的Failed to retrieve the 'series' property of a null or undefined reference错误,本质是Highcharts处理桑基图节点Tooltip时的默认逻辑没适配自动生成的节点,加上你的代码里可能漏了关键配置,导致悬停节点时找不到关联的series对象。

核心问题分析

桑基图的连线是属于你定义的series,但节点默认是从data的from/to字段自动生成的,这些自动节点并没有被正确关联到series实例,所以Tooltip的默认函数尝试访问series属性时就会抛出null/undefined错误。另外,你的代码里漏写了series的type: 'sankey'配置,这也会导致Highcharts无法正确识别图表类型,加剧节点逻辑的异常。

两种快速解决方案

方案1:自定义Tooltip的节点格式化函数

直接给Tooltip配置nodeFormatter,绕过默认的series依赖逻辑,同时补全series的type:

var sankeyOptions = {
  chart: { renderTo: "container" },
  title: { text: title },
  tooltip: {
    // 自定义节点的Tooltip内容
    nodeFormatter: function() {
      return `<b>${this.name}</b><br/>总流量: ${this.sum}`;
    },
    // 保留连线的Tooltip正常显示
    pointFormatter: function() {
      return `${this.from} → ${this.to}: <b>${this.weight}</b>`;
    }
  },
  series: [{
    type: 'sankey', // 必须指定桑基图类型!
    keys: ['from', 'to', 'weight'],
    data: [ 
      ['Oil', 'Transportation', 5],
      ['Coal', 'Electricity', 8],
      ['Electricity', 'Transportation', 3]
    ]
  }]
};

方案2:显式定义nodes数组

手动把所有节点列出来,让每个节点都明确关联到当前series,这样Tooltip就能正常找到series属性:

var sankeyOptions = {
  chart: { renderTo: "container" },
  title: { text: title },
  series: [{
    type: 'sankey',
    keys: ['from', 'to', 'weight'],
    data: [ 
      ['Oil', 'Transportation', 5],
      ['Coal', 'Electricity', 8]
    ],
    // 显式定义所有节点
    nodes: [
      { id: 'Oil', name: 'Oil' },
      { id: 'Transportation', name: 'Transportation' },
      { id: 'Coal', name: 'Coal' },
      { id: 'Electricity', name: 'Electricity' }
    ]
  }]
};

额外建议

如果上面的方法还没解决,建议检查你的Highcharts版本——旧版本的桑基图确实存在这个Tooltip节点的bug,升级到最新稳定版(比如v10+)大概率能直接修复问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:07:23