Javascript D3四叉树中的无限递归
我试图在D3中向四叉树添加一个元素,但每当我添加多个元素时,控制台中就会出现“RangeError:超出最大堆栈大小”错误。我的四叉树声明如下(在CoffeeScript中): 我试图修改示例,仅供参考;但是,在将第二个元素添加到四根时,即使注释掉示例中的所有其他代码,仍然会出现无限递归错误 任何指导都将不胜感激Javascript D3四叉树中的无限递归,javascript,d3.js,coffeescript,quadtree,Javascript,D3.js,Coffeescript,Quadtree,我试图在D3中向四叉树添加一个元素,但每当我添加多个元素时,控制台中就会出现“RangeError:超出最大堆栈大小”错误。我的四叉树声明如下(在CoffeeScript中): 我试图修改示例,仅供参考;但是,在将第二个元素添加到四根时,即使注释掉示例中的所有其他代码,仍然会出现无限递归错误 任何指导都将不胜感激 提前感谢。通常,堆栈溢出错误和四叉树意味着您在四叉树的范围之外添加了一个元素。您确定您正确计算了x_比例域和范围,以便所有x值都在您用于范围的范围内吗?这就是问题所在,谢谢!太好了。很
提前感谢。通常,堆栈溢出错误和四叉树意味着您在四叉树的范围之外添加了一个元素。您确定您正确计算了x_比例域和范围,以便所有x值都在您用于范围的范围内吗?这就是问题所在,谢谢!太好了。很高兴您这样做解决了。由于实际问题与问题并不完全匹配,所以标记为关闭——四叉树问题只是一个症状。@AmeliaBR的评论解决了我刚才遇到的类似问题,将径向布局饼图的四叉树标签放置代码改为折线图。谢谢!
quadtree = d3.geom.quadtree()
.x((d) -> x_scale(d[dim_1]))
.y(0)
quadroot = quadtree([])
... later in another function (quadtree and quadroot are both scoped globally) ...
quadtree.extent([[x_scale.range()[0], 0],[x_scale.range()[1], 0]])
datapoints = datapoints_g.selectAll("circle")
.data(vis_data)
datapoints.exit()
.remove()
# now add / transition datapoints
datapoints.enter()
.append("circle")
.attr("cx", x_scale.domain()[0])
.attr("cy", y_scale.domain()[0])
.on("mouseover", showDetails)
.on("mouseout", hideDetails)
datapoints
.transition()
.duration(1000)
.attr("r", (d) ->
if sizeBy == 'none'
return datapoint_size
else
return size_scale(d[sizeBy]))
.attr("cx", (d) -> x_scale(d[dim_1]))
.attr("cy", (d) ->
if dim_2 != 'none'
y_scale(d[dim_2])
else
quadroot.add(d)
# calculateOffset(maxR)
)