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
相关产品推荐
相关产品推荐

