Highcharts问题:每个X轴分类仅显示一个dumbbell系列tooltip
问题
使用Highcharts绘制了反转(inverted)状态的哑铃图(dumbbell)展示数据范围,当同一X轴分类下存在多个数据范围时,无论鼠标悬停在何处,每个分类仅能显示其中一个范围的提示框(tooltip),重叠与非重叠范围均存在此问题。
配置代码如下:
Highcharts.chart('container', { "chart": { "type": "dumbbell", "inverted": true, }, "legend": { "enabled": true }, "plotOptions": { "series": { "marker": { "enabled": true } } }, "series": [ { "type": "dumbbell", "name": "Test", "data": [ { "name": "Test1", "low": 1658882324000, "high": 1699267066000, "v": "A" }, { "name": "Test1", "low": 1681067066000, "high": 1739067066000, "v": "B" }, { "name": "Test2", "low": 1658882324000, "high": 1690267066000, "v": "C" }, { "name": "Test2", "low": 1711067066000, "high": 1739067066000, "v": "D" } ], "dashStyle": "Solid", "lineWidth": 1, "label": { "enabled": false }, "visible": true, "tooltip": null, } ], "xAxis": { "labels": { "style": { "fontSize": "9px" } }, "type": "category", "crosshair": true }, "yAxis": { "title": { "text": "Test range" }, "crosshair": true, "labels": { "format": "{value:%Y%m%d}" } }, "tooltip": { "pointFormat": "{point.v} - {point.low:%Y%m%d} - {point.high:%Y%m%d}", "enabled": true } });
解决方案
问题根源是Highcharts默认的点拾取逻辑:同一X轴分类下的多个哑铃点,鼠标交互只会识别到单个点,反转图表后坐标轴的交互区域计算逻辑进一步放大了这个问题。
可以通过以下配置修复:
开启tooltip共享模式:在tooltip配置中添加
shared: true,鼠标悬停时会展示当前分类下所有数据点的tooltip信息:"tooltip": { "pointFormat": "{point.v} - {point.low:%Y%m%d} - {point.high:%Y%m%d}", "enabled": true, "shared": true }调整点匹配规则:在plotOptions的series中配置
findNearestPointBy: 'xy',让Highcharts基于XY坐标精准匹配最近的点,而不是只根据X轴分类判断:"plotOptions": { "series": { "marker": { "enabled": true }, "findNearestPointBy": "xy" } }拆分独立系列(可选):如果需要更独立的交互,可以将同一分类下的不同数据范围拆分为多个series,每个系列的tooltip会独立触发。
内容的提问来源于stack exchange,提问作者siggemannen
相关产品推荐
相关产品推荐

