d3.js - 确定嵌套深度(或儿童的子女)

时间:2013-02-11 21:57:34

标签: javascript svg d3.js nested depth

我有一个数据可视化,它目前根据对象是否有孩子给对象一个类,如下所示:

d3.json("skills.json", function(error, root) {
  var node = svg.datum(root).selectAll(".node")
    .data(pack.nodes)
    .enter().append("g")
    .attr("class", function(d) { return d.children ? "node" : "leaf node"; })

我想要做的是根据他们的深度给他们一个不同的类,或者至少,基于他们是否有孩子的孩子,基本上是这样的(虽然我不确定语法):< / p>

.attr("class", function(d) { return d.children.children ? "node" ? d.children ? "branch" : "leaf node"; });

有谁知道这样做的正确方法?

2 个答案:

答案 0 :(得分:2)

您可以使用array.some查看当前节点的任何子节点是否有子节点。

node.attr("class", function(d) {
  return d.children ? (d.children.some(function(c) { return c.children; })
      ? "grandparent" 
      : "parent")
      : "child";
});

答案 1 :(得分:0)

D3.js API包含一个未记录的方法wp_reset_postdata(),用于跟踪根节点的深度。