避免D3更新中的无效路径格式错误

时间:2015-10-06 12:44:20

标签: javascript d3.js

我在动态添加节点时遇到d3树布局问题。

根据节点类型,我向节点添加路径符号,但是在更新时我收到错误,说“#34;路径格式无效"。

Enter和update都使用相同的代码:

nodeUpdate.select("path")
                .attr("d", d3.svg.symbol().type(function(d)
                {
                    return self.TypeToShape(d.Type);
                })
                .size(150))
                .attr("transform", function(d) 
                { 
                    var transform="translate(" + 2 + "," + -1 + ")"
                    if (d.Type==="e")
                    {
                        transform = transform+" rotate(30)"; 
                    }
                    return transform;
                })
                .style("fill", function(d){
                    return self.TypeToColour(d.Type);
                });

Enter似乎不会导致问题,只会更新。

我是D3的新手,所以我想知道我是否错过了关于d3如何工作的概念,可能会导致这种情况。

请参阅此处的小提琴:http://jsfiddle.net/z15825qu/

1 个答案:

答案 0 :(得分:2)

问题是您正在转换SVG符号,这会产生无效的path s。要修复,只是不要过渡它们:

node.select("path")
    .attr("d", d3.svg.symbol().type(function(d) {
        return self.TypeToShape(d.Type);
    })

完整示例here