多系列AG-Chart的sync.nodeInteraction同步交互功能失效求助
多数据系列图表下sync.nodeInteraction失效的解决方案
这种多系列场景下sync.nodeInteraction失效的情况确实有开发者遇到过,核心问题在于开启tooltip.shared = true时,多系列图表的交互事件逻辑和单系列存在差异,默认同步机制无法正确匹配跨图表的系列节点。
针对你的场景(两个图表系列数据完全一致),提供两种可行解决思路:
自定义交互同步逻辑:放弃依赖内置的
sync.nodeInteraction,手动监听图表的pointermove事件,获取当前悬浮的数据点信息后,在另一个图表中触发对应tooltip的显示:// 监听第一个图表的pointermove事件 chart1.on('pointermove', (e) => { const activePoint = e.target.dataPoint; if (activePoint) { // 在第二个图表中匹配同x轴值、同系列的数据点 const targetSeries = chart2.series.find(series => series.name === activePoint.series.name); const targetPoint = targetSeries?.data.find(point => point.x === activePoint.x); if (targetPoint) { chart2.tooltip.refresh([targetPoint]); } } });修改同步匹配规则:若使用的是支持自定义同步规则的图表库,可指定基于x轴值进行节点匹配,替代默认的索引匹配逻辑:
Highcharts.sync('nodeInteraction', { matchBy: 'x' // 基于x轴值跨图表匹配节点 });
单系列场景正常、多系列失效的本质原因是:默认同步逻辑按节点在系列中的索引匹配,多系列下同一x轴值对应多个不同系列的节点,索引匹配逻辑会出现错位,导致tooltip无法同步显示。
内容的提问来源于stack exchange,提问作者Fabian Snaith
相关产品推荐
相关产品推荐

