親子接続のデータベースがあります。データは次のようになりますが、任意の方法 (辞書、リストのリスト、JSON など) で表示できます。
links=(("Tom","Dick"),("Dick","Harry"),("Tom","Larry"),("Bob","Leroy"),("Bob","Earl"))
必要な出力は、d3 でレンダリングされる階層的な JSON ツリーです。データには個別のサブツリーがあり、ルート ノードにアタッチします。そのため、リンクを再帰的に調べて、ツリー構造を構築する必要があります。私が得ることができる最も遠いのは、すべての人を反復して子供を追加することですが、高次のリンクを実行する方法がわかりません(たとえば、子供を持つ人を他の人の子供に追加する方法)。これは別の質問hereに似ていますが、ルートノードを事前に知る方法がないため、受け入れられたソリューションを実装できません。
サンプル データから次のツリー構造を作成します。
{
"name":"Root",
"children":[
{
"name":"Tom",
"children":[
{
"name":"Dick",
"children":[
{"name":"Harry"}
]
},
{
"name":"Larry"}
]
},
{
"name":"Bob",
"children":[
{
"name":"Leroy"
},
{
"name":"Earl"
}
]
}
]
}
この構造は、私の d3 レイアウトでは次のようにレンダリングされます。