1

私は現在、次のように、オブジェクトに子があるかどうかに基づいてオブジェクトにクラスを与えるデータ視覚化を持っています。

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"; })

私がやりたいのは、彼らの深さに基づいて、または少なくとも、彼らが子供の子供を持っているかどうかに基づいて、本質的に次のような異なるクラスを彼らに与えることです(構文はわかりませんが):

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

誰かがこれを行うための適切な方法を知っていますか?

4

2 に答える 2

2

array.someを使用して、現在のノードの子のいずれかに子があるかどうかを確認できます。

node.attr("class", function(d) {
  return d.children ? (d.children.some(function(c) { return c.children; })
      ? "grandparent" 
      : "parent")
      : "child";
});
于 2013-02-14T02:10:48.563 に答える
0

D3.js APIにはd.depth、ルートからノードの深さを追跡する文書化されていないメソッドが含まれています。

于 2015-08-27T02:59:54.683 に答える