bubble.nodes()
の呼び出しがbubble=d3.layout.pack()
のでd3.layout.pack().nodes()
への呼び出しに帰着します。この場合、pack.nodes()
は入力のchildren
(この場合はすべてのパッケージ)のvalue
キーを使用してノードのサイズを設定し、位置を決定するようにハードコードされています(x
とy
を追加します)。本質的には
、
var root = {"children": [
{"packageName":"cluster","className":"AgglomerativeCluster","value":3938},
{"packageName":"cluster","className":"CommunityStructure","value":3812},
{"packageName":"cluster","className":"HierarchicalCluster","value":6714},
{"packageName":"cluster","className":"MergeEdge","value":743}
]}; // This is an excerpt of the real data.
var bubble = d3.layout.pack();
// pack.nodes() assigns each element of "children" a r, x, and y based on value
bubble.nodes(root);
は、これはあなたがclasses(root)
は、それらの属性を持っていないので、classes()
はr
、x
、およびy
を追加していないことを確認することができ、同様に最初に私を倒してしまいました。 krasnayaの答えはこれのほとんどに触れましたが、私はもう少し説明が必要だと感じました(少なくとも私のためにしました)。
[[pack.nodesのAPIリファレンス]](https://github.com/mbostock/d3/wiki/Pack-Layout#wiki-nodes)を見ましたか? – mbostock
はい - しました。関数内の 'classes'がbubble.nodesに基づいている前に割り当てられている追加のプロパティを持っている理由は説明しません。 ドキュメントには 'r'属性についての説明もありません。 – kratsg
'r'プロパティは、レイアウトによって計算されるノード半径です。 – mbostock