2017-09-05 44 views
1

让我从解释我提供的小提琴开始。 https://jsfiddle.net/abcdlearner/a4y3cge4/1计算组中的积分 - Highcharts

在图表的最右边,有四个泡在一起。所以当我将鼠标悬停在该组中的任何一个泡泡上时,我应该始终记住四位数。因为该组包含四个泡泡。而在小提琴中,当悬停在不同的气泡上时,它会显示不同的计数。简而言之,例如,如果有8个气泡链接在一起,那么当该组中的任何气泡悬停时,它应该显示计数为8。我需要组计数而不是计数的气泡与悬浮气泡相交。这可以通过我想的递归来实现。但我坚持这一点。任何及时的帮助,将不胜感激!

series: [{ 
     tooltip: { 
     pointFormatter: function() { 
    var _this = this; 
    var overlapCount = this.series.data.reduce(function (sum, point) { 
     return sum + (point !== _this && areOverlapping(_this, point)); 
    }, 0) + 1; 
    return 'Overlapping bubbles: ' + overlapCount; 
} 
     } 

回答

1

从我的理解中,你想要统计所有的chained气泡。我创建了递归代码,收集所有在一个组中链接的气泡并将它们返回到一个数组中。看看我在下面发布的例子。

例子:
https://jsfiddle.net/m53tevbq/

0

正如你所说,你的脚本需要一些递归。

你离期望的结果并不很远。我的逻辑如下传递关系:

simple transitivity relation

所以,想象ABC是图气泡。如果A重叠B重叠CA不重叠C),重叠泡的总金额为3

所以A并不“知道” C,但两者是重叠的B

如果您对逻辑或代码有任何疑问,请随时询问。我在代码中添加了一些注释,以解释我所做的事情。

最后,here is your working fiddle

+0

嘿感谢了很多的努力。请参阅更新的小提琴:https://jsfiddle.net/a4y3cge4/5/ – Martin

+0

哦,对,问题是我的示例只接受具有较高数量重叠兄弟的元素,并将其设置为同一组的其他泡泡。 –