添加"三角形"在d3.js节点中

时间:2013-11-26 07:01:34

标签: javascript svg d3.js

我有以下代码:

var nodeEnter = node.enter().append("svg:g")
              .attr("class", "node")
              .attr("transform", function(d) { return "translate(" + source.y0 + "," + source.x0 + ")"; })
              .on("click", function(d) { toggle(d); update(d); });

          nodeEnter.append("svg:circle")
              .attr("r", 1e-6)
              .style("fill", function(d) { return d._children ? "lightsteelblue" : "#fff"; });

          nodeEnter.append("svg:text")
              .attr("x", function(d) { return d.children || d._children ? -10 : 10; })
              .attr("dy", ".35em")
              .attr("text-anchor", function(d) { return d.children || d._children ? "end" : "start"; })
              .text(function(d) {
                if (d.size != undefined) {
                    return d.name + " :: " + d.size + " :: " + d.diff_day;
                } else {
                    return d.name;
                }
                })
              .style("fill-opacity", 1e-6)
              .style("font-size", "15px");

          nodeEnter.append("svg:path").attr("d", d3.svg.symbol.type("triangle-up").style("fill", "black"));

现在,问题是svg:circle和svg:文本正常。但是" d3.svg.symbol.type(" triangle-up")。风格("填充","黑"))&# 34;似乎不起作用。任何帮助将不胜感激......

1 个答案:

答案 0 :(得分:2)

您无法在自己创建的符号上设置属性属性,如下所示:

 nodeEnter.append("svg:path")  // Wrong.
     .attr("d", d3.svg.symbol.type("triangle-up").style("fill", "black"));

您必须先设置d属性,然后fill上设置样式path

 nodeEnter.append("svg:path")  // Fixed.
     .attr("d", d3.svg.symbol().type("triangle-up"))
     .style("fill", "black");