Highcharts 的 dumbbell 图表在同 category(x 轴)存在多个数据点时,默认仅触发一个 tooltip,原因是 findNearestPointBy 默认为 'x';将其设为 'xy' 即可支持多点精准悬停。
highcharts 的 dumbbell 图表在同 category(x 轴)存在多个数据点时,默认仅触发一个 tooltip,原因是 `findnearestpointby` 默认为 `'x'`;将其设为 `'xy'` 即可支持多点精准悬停。
在 Highcharts 中,dumbbell 图形本质上是基于范围(range)的系列类型,其数据点由 low 和 high 定义,并常与类别轴(如 "type": "category")配合使用。当多个 dumbbell 数据点共享同一个 x-axis 类别(例如本例中 "name": "Test1" 出现两次),Highcharts 默认采用 findNearestPointBy: 'x' 策略——即仅依据 x 坐标查找最近点,忽略 y 方向差异。这导致鼠标悬停在同一 category 区域时,系统始终返回“第一个匹配点”,其余重叠或并列的 dumbbell 段无法触发 tooltip。
✅ 正确解法是在对应 series 配置中显式指定:
"series": [{ "type": "dumbbell", "name": "Test", "findNearestPointBy": "xy", // ← 关键修复项 "data": [ { "name": "Test1", "low": 1658882324000, "high": 1699267066000, "v": "A" }, { "name": "Test1", "low": 1681067066000, "high": 1739067066000, "v": "B" }, // ... ], // 其他配置...}]
⚠️ 注意事项:
? 补充技巧:为提升交互体验,可进一步启用 tooltip.followPointer: true 或自定义 tooltip.formatter 实现多点聚合展示(如列出同一 category 下所有匹配点),但核心前提仍是 findNearestPointBy: 'xy' 的正确配置。
修复后,悬停任意 dumbbell 线段均可准确触发对应 point.v、point.low 和 point.high 的格式化提示,真正实现“所见即所得”的精细化交互。