Javascript Highcharts数据标签允许重叠不工作

Javascript Highcharts数据标签允许重叠不工作,javascript,html,css,highcharts,Javascript,Html,Css,Highcharts,在我的dataLabels系列选项中,我将allowOverlap设置为false。然而,我仍然得到重叠的标签。我的实际实现确实是定制的,我曾尝试创建一个简单的JSFIDLE来复制它,但不能 然而,我已经找到了问题所在,至少在html输出中是这样 在中,当我检查Chrome Dev工具中的labels元素时,我看到前几个标签如下所示: 类highcharts数据标签hidden似乎与opacity:0一起隐藏了相关标签。在未应用该类标签的情况下,opacity设置为1,以显示标签。它按它应该的

在我的
dataLabels
系列选项中,我将
allowOverlap
设置为
false
。然而,我仍然得到重叠的标签。我的实际实现确实是定制的,我曾尝试创建一个简单的JSFIDLE来复制它,但不能

然而,我已经找到了问题所在,至少在html输出中是这样

在中,当我检查Chrome Dev工具中的labels元素时,我看到前几个标签如下所示:

highcharts数据标签hidden
似乎与
opacity:0一起隐藏了相关标签。在未应用该类标签的情况下,
opacity
设置为
1
,以显示标签。它按它应该的方式工作;本例中没有重叠标签

但是,通过我自己的代码输出,我看到如下情况:

在我的输出中,显示所有标签;没有什么是隐藏的;很多都是重叠的。似乎
highcharts data label hidden
类正正确应用于某些标签,即应隐藏以避免重叠的标签。但同时,这些元素的
不透明度
设置为
1
,而不是
0
。。。事实上,所有元素的
不透明度
1
。。。因此,我所有的标签都显示出来了,结果很多标签重叠了

果不其然,如果我在Dev工具中动态编辑样式标记,将
opacity
更改为
0
,对于那些隐藏了
highcharts数据标签的元素
类,标签会很好地排列,没有任何重叠

我花了几个小时试图弄清楚为什么我的代码将
不透明度设置为
1
,即使这些标签应该隐藏,尽管显然正确地分配了
highcharts data label hidden
类。我需要你的帮助,即使是基于这个公认的有限信息

一个线索可能是,我还注意到,
highcharts-data-label-color-0
类出现在每个元素的工作示例中,而
highcharts-data-label-color undefined
出现在我的示例中。查看HC源代码,这似乎来自
dataLabel.addClass(“highcharts数据标签颜色-”+point.colorIndex…
,因此我的
point.colorIndex
必须以
未定义的
结束,但我不确定原因,或者这是否与我看到的非隐藏标签问题有关。我正在代码中使用point和标签颜色进行一些“高级”操作,以便我可以设置标签的颜色与点的颜色相匹配,即使在颜色渐变生效的情况下(这是在图表加载后完成的)。但我对标签的不透明度没有做任何处理,就我所知……甚至不知道如何更改,
dataLabels
对象甚至没有要更改的
opacity
元素

感谢您的帮助

编辑

最后,为了证明我没有发疯,我做了一个测试。如果你运行这个例子,检查重叠的标签元素,你会发现(如上所述),很多人隐藏了
highcharts数据标签,但也有
不透明性:1
,使它们在不应该的时候可见

(部分)解决方案似乎是在每个系列循环之后执行
series.update(false)
(在本例中只有一个系列),而不是在最后执行
chart.update()
,如所示。问题:为什么不必将
true
传递到更新中

然而,虽然这是一个改进,但仍然有一个奇怪之处…加载后,尝试点击“未设置极端值”按钮…标签再次重叠

这不仅仅是在没有参数的情况下调用
setExtremes()
,而是加载并点击setExtremes一次(OK),然后点击两次(NotOK)…本例中唯一的变化是使用比原例更宽的极值,以便标签重叠。更奇怪的是,在本例中,一些标签保持隐藏,而另一些则不隐藏…这不是全部或全部

即使是第一个,它在打开时不起作用,如果你点击设置的极端,然后点击取消设置的极端,标签也不再重叠。但是再次点击取消设置的极端,它们再次重叠。无法确定这里发生了什么

事实上,在花了一段时间制作这个复制品之后,我现在注意到,我在文章一开始给出的代码也显示了这种行为,而不需要
load()
event…再次打开此项…起初看起来不错,但点击“取消设置极端值”按钮…标签重叠!在这里,我所做的只是扩大设置极端值的范围…加载该项并点击设置极端值(OK),然后再次点击(NOT OK)


如何确保在这种情况下,无论设置了什么轴极值(以及极值的设置顺序),标签始终不重叠?

感谢您重现本期。正如我之前所想,这是一个回归。在8.0.4版本中,一切都正常运行。我已经在Highcharts GitHub发行频道上报道过,您可以在该频道遵循以下线索:

最新稳定版本:


走极端
打破极端

如果您不需要任何新功能,请使用8.0.4版本,直到我们的核心开发人员解决此问题。

有趣的情况是,您无法在在线编辑器上重现此行为,这是一件很遗憾的事情。请问您使用的Highcharts是哪个版本?最新版本:
8.1.2
。我很感激您可能很难帮助我在这种情况下,我认为比我拥有更详细的highcharts代码知识和经验的人可能会有一些见解,这可能有助于了解发生了什么…这让我发疯!请在以前的版本中测试它
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="https://code.highcharts.com/8.0.4/highcharts.js"></script>

<div id="container"></div>

<button id="setextremes">Set extremes</button>
<button id="unsetextremes">Unset extremes</button>