我的代码是bl.ocks.org上的here:
更改选择标记的值以限制圆圈数。如果你不玩它似乎工作很多,但特殊的实例(例如选择10 for TE然后选择247)每次都会崩溃。如果您检查控制台,您会看到相关的行是nodes = pack.nodes(data);
。我看到两个可能性:这是d3的包布局的错误,或者我的数据搞砸了。您能否判断其中任何一种情况是否如此,若然,具体问题是什么?
答案 0 :(得分:1)
您的代码中存在导致子节点重复的错误。由于子项是重复的,因此包布局中存在无限循环。
我通过在调试器中设置断点然后在让代码卡住了一段时间后暂停代码来发现这一点。果然,它被困在一个for循环中,节点的_pack_next
节点就在这里,导致无限循环。孩子们很容易看到重复;例如,e.filter(function(d) { return d.name === "Jermichael Finley"; })
返回了两个节点,而不是一个节点。