更新D3数据集会导致错误:<circle>属性cx:预期长度“ NaN”

时间:2019-10-30 01:22:42

标签: d3.js

我有一个D3v5力导向图,显示了一些数据..到目前为止很好..它可以工作。但是,当我尝试更新数据集时,出现错误:属性cx:预期长度“ NaN”

起作用的代码(包含第一个数据集)如下:

var selection = gNodes.selectAll("circle")
                        .data(allNodes);
SVGNode = selection.enter().append("circle")
                        .attr("r", nodeRadius);

稍后,为响应按钮,请按以下步骤操作:

var nodeSelection = gNodes.selectAll("circle").data(allNodes);
SVGNode = nodeSelection.enter().append("circle").attr("r", nodeRadius);
nodeSelection.exit().remove();
SVGNode = nodeSelection.enter().merge(nodeSelection);

对于这个测试用例,我只是将数据添加到数据集中,而不是删除。在查看调试器时,我注意到在第一个代码块的第一条语句之后, selection 变量是 rt {ownerDocument:Document ...}类型的数组。在第二条语句之后, SVGNode 是由 circ 个项目组成的数组。这是预期的。

但是,在第二个代码块中,添加到 allNodes 中的新项目在 selection 中显示为 rt {ownerDocument:Document ...}项,将它们附加到 SVGNode 后,它们不会更正为圆圈。因此,原始项目保留为圆圈,而新项目保留为 rt rt ,显然没有任何 cx / cy 属性,因此出现错误。

有人知道是什么在阻止将其他数据元素的添加作为圆圈类型添加吗?

谢谢

0 个答案:

没有答案