7

例: http: //mbostock.github.com/d3/ex/bubble.html

ここに画像の説明を入力してください

16行目で何が起こっているのか理解するのに苦労しています:

.data(bubble.nodes(classes(json))

そして、なぜ、またはclasses()関数内のどこで、変数classes []は、そのオブジェクトごとに定義されたx、y、r値を取得します。また、bubble.nodes()は実際の関数ではないように見えますか?

追加した場合

console.log(classes)

44行目と45行目の間(内部のすべてのオブジェクトにはすでにx、y、rが入力されているようです)ですが、なぜこれが発生するのかは明らかではありません。

4

2 に答える 2

2

への呼び出しは、 sinceへの呼び出しにbubble.nodes()要約されます。秘訣は、入力のキー(この場合はすべてのパッケージ) を使用してノードのサイズを決定し (add )、位置を決定する (addおよび)ようにハードコーディングされていることです。d3.layout.pack().nodes()bubble=d3.layout.pack()pack.nodes()valuechildrenrxy

本質的に、

 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()はつまずきました。krasnaya の回答はこのほとんどに触れていましたが、もう少し説明が必要だと感じました (少なくとも私にとってはそうでした)。rxyclasses(root)

于 2014-08-10T17:43:37.020 に答える
1

classes() 関数は属性を追加しません。ツリーを平坦化するだけです。属性は、bubble.nodes() (d3.layout.pack().nodes()) 内に追加されます。

JSON.stringify(classes[0])
"{"packageName":"cluster","className":"AgglomerativeCluster","value":3938}"
于 2012-10-28T02:04:26.540 に答える