D3.js 大型d3图形渲染问题

D3.js 大型d3图形渲染问题,d3.js,D3.js,我正在尝试渲染一个D3Force布局,其中包含大约5k个节点和25k个链接。我得到以下错误,没有进一步的提示: Uncaught RangeError: Maximum call stack size exceeded 较小的图形被正确渲染。我知道这似乎是一个奇怪的问题,但无法提供进一步的细节;这可能是什么原因造成的?我怀疑布局属性可能会影响其性能,但之前没有对其进行过调整的经验(即它们如何影响渲染过程) 我当前正在初始化force布局,如下所示: var force = d3.layout.

我正在尝试渲染一个D3Force布局,其中包含大约5k个节点和25k个链接。我得到以下错误,没有进一步的提示:

Uncaught RangeError: Maximum call stack size exceeded
较小的图形被正确渲染。我知道这似乎是一个奇怪的问题,但无法提供进一步的细节;这可能是什么原因造成的?我怀疑布局属性可能会影响其性能,但之前没有对其进行过调整的经验(即它们如何影响渲染过程)

我当前正在初始化force布局,如下所示:

var force = d3.layout.force()
  .size([width, height])
  .linkDistance(180)
  .charge(-120)
  .on('tick', tick);

根据我使用
d3
的经验,它不适用于大型数据集。力布局在计算上特别昂贵。从错误来看,似乎有太多的函数调用,您的浏览器无法再处理它们。这是递归函数的常见问题。从我与数据可视化专家的聊天中;通常根据需求从
d3
canvas
再到
webgl
。在您的例子中,瓶颈可能是force布局本身,这很难计算。此错误很可能与数据量无关——添加更多节点/链接不会增加嵌套/递归的级别。我会检查一下数据本身,看看是否有任何不一致之处。@Larskothoff数据看起来很好(x/y属性中没有NaN,这个问题在中有注释)。这可能是一个bug(请参阅)。