Highcharts在隐藏/显示事件上定位数据标签

Highcharts在隐藏/显示事件上定位数据标签,highcharts,hide,show,Highcharts,Hide,Show,我们的目的:我们正在开发一种通过重新定位避免重叠数据标签的功能。这样做,我们在通过show事件更新dataLabel位置时会遇到问题。为了说明我们的问题,我们提供了一个简化的示例,其中包含一个函数,该函数将每个可见系列的第一个dataLabel向顶部(y方向)重新定位30px。重新定位功能由show事件触发 ... function adjustLables(chart, visibleIndex) { console.log('dataLabels'); for (var i = 0; i &

我们的目的:我们正在开发一种通过重新定位避免重叠数据标签的功能。这样做,我们在通过show事件更新dataLabel位置时会遇到问题。为了说明我们的问题,我们提供了一个简化的示例,其中包含一个函数,该函数将每个可见系列的第一个dataLabel向顶部(y方向)重新定位30px。重新定位功能由show事件触发

... function adjustLables(chart, visibleIndex) {
console.log('dataLabels');
for (var i = 0; i < visibleIndex.length; i++) {

    var index = visibleIndex[i],
        dataLabel = chart.series[index].points[0].dataLabel,
        adjY = dataLabel.y - 30;

    chart.series[index].points[0].dataLabel.attr({
        y: adjY
    });
    console.log(chart.series[index].name, 'dataLabel.y:', dataLabel.y, ', adjY:', adjY, dataLabel);

};
console.log('\n');
}; ...
。。。功能可调整(图表、可见索引){
log('dataLabels');
对于(变量i=0;i
我们的问题: 虽然我们的函数通过应用.attr({y:adjY})来调整dataLabel.y属性,但dataLabel对象的行为与我们预期的不同

例如:(和以下描述)

  • 对于通过首次单击图例项显示的系列,重新定位仅起一次作用。如果一个人去激活并再次激活同一系列,我们的调整将不再有效。 (例如,在我们的小提琴中激活series2,您将看到它的第一个dataLabel移动到顶部30px。但是,停用/重新激活series2,dataLabel不再移动到顶部30px,而是显示在其标准位置。)

  • 为了调试这个神秘的停用/激活行为,我们在调用.attr()后将一些信息记录到控制台:seriesName、dataLabel.y、adjY、dataLabel对象。令人惊讶的是,尽管dataLabel.y和adjY值相同,但dataLabel对象本身在其y属性上仍然不受影响


  • 总的来说,我们想知道show事件是否是“更新”dataLabel位置的正确方式。非常欢迎您提供任何经验或建议。

    我认为这主要是由
    动画造成的,请禁用它以进行调试:-现在效果更好

    还有,你看得很清楚