我有一个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 属性,因此出现错误。
有人知道是什么在阻止将其他数据元素的添加作为圆圈类型添加吗?
谢谢