4

次のようなグラフ(私の場合はツリー)を表す JSON があります。

{"directed": true, "graph": [], 
"nodes": [{"time": 4, "id": 4551308, "name": "Alto da Boa Vista"}, {"time": 7, "id": 4551309, "name": "Sumare"},
...
"links": [{"source": 0, "target": 36, "weight": 1}, 
{"source": 1, "target": 36, "weight": 1},
...

これを使用して、この例のようにツリーを構築するにはhttp://mbostock.github.com/d3/talk/20111116/force-collapsible.html、子ノードがネストされた階層オブジェクトでこの JSON を変換する必要がありますここに示すように、親内: https://github.com/mbostock/d3/wiki/Tree-Layout#wiki-tree

D3には、グラフからツリーに変換する組み込み関数がありますか? または、ネストされたツリーの JSON objetc をグラフからどのように生成しますか?

この jsFiddle に例があります: http://jsfiddle.net/fccoelho/bFT8K/8/

4

1 に答える 1

3

わかりました、これは2つの部分の答えです。

パート 1: D3 には、配列をネストされた構造に変換する機能が組み込まれています。d3.nest() 関数を見てください

これは主に階層レイアウト用です: Cluster、Pack、Partition、Treemap

パート 2: 投稿した例に似たレイアウトを実現しようとしている場合は、データに対して何もする必要はありません。その例では、グラフを期待する強制レイアウトを使用しています。強制レイアウトは任意の形状のグラフを処理でき、ツリーはいくつかの制約に従う単なるグラフであるため、変換を行う必要はありません。グラフの形状がたまたま木の場合は、木のように見えます。

これで十分です。

force
  .nodes(spread.nodes)
  .links(spread.links)
  .start();
于 2013-11-22T14:00:50.120 に答える