このツリー図には、 http: //bl.ocks.org/1249394にあるコードを使用しています。
ルートノードのみのサイズを変更するにはどうすればよいですか?ルートノードのサイズをすべての子ノードとは異なるものにしたい。どうすればよいですか?
このツリー図には、 http: //bl.ocks.org/1249394にあるコードを使用しています。
ルートノードのみのサイズを変更するにはどうすればよいですか?ルートノードのサイズをすべての子ノードとは異なるものにしたい。どうすればよいですか?
基本的に、ノードを区別するために使用できるプロパティが必要です。node
aがであるかどうかを判断するために使用できる既存の親プロパティがあるようroot
です。したがって、ノードに親がない場合(つまり、ルートである場合)は、追加関数を変更して円の半径を変更する必要があります。
nodeEnter.append("svg:circle")
.attr("r", function(d) { return !d.parent ? 8.5 : 4.5; })
.style("fill", function(d) { return d._children ? "lightsteelblue" : "#fff"; })
.on("click", click);
http://bl.ocks.org/3767443で実際の例を見ることができます。
一般に、特定のノードを変更する場合は、次のように、異なるノードに新しいプロパティを追加できます。
{
"name": "MAT",
"root": true,
"children": [
{ ... } ...
]
}
次に、このプロパティを使用して、ノードが追加されるときにノードを変更できます(ここでは円を変更していますが、追加されるテキストに対しても同じことができます)。円のサイズを4.5にハードコーディングする代わりに、root
プロパティを使用してルートノードを大きくしていることに注意してください。
nodeEnter.append("svg:circle")
.attr("r", function(d) { return d.root ? 8 : 4.5; })
.style("fill", function(d) { return d._children ? "lightsteelblue" : "#fff"; })
.class(function(d) { return d.root ? 'root-node' : 'normal-node'; })
.on("click", click);
上記のようにクラスも設定した場合は、CSSを使用してルートノードのスタイルを自由に設定できます。
.root-node {
cursor: pointer;
fill: #fff;
stroke: green;
stroke-width: 3.5px;
}