私は d3.js を使用して、動物 (生物) のファミリー (一度に最大 4000) をツリー グラフとして視覚化していますが、データ ソースはディレクトリ リストや名前空間オブジェクトのリストでもかまいません。私のデータは次のようになります:
json = {
organisms:[
{name: 'Hemiptera.Miridae.Kanakamiris'},
{name: 'Hemiptera.Miridae.Neophloeobia.incisa'},
{name: 'Lepidoptera.Nymphalidae.Ephinephile.rawnsleyi'},
... etc ...
]
}
私の質問は次のとおりです。ツリーマップなどの多くの d3 ビジュアライゼーションで使用されるように、上記のデータを階層的な親/子データ構造に変換する最良の方法を見つけようとしています(データの例については、d3/ のflare.json を参照してください) examples/data/ ディレクトリ)。目的のデータ構造の例を次に示します。
{"name": "ROOT",
"children": [
{"name": "Hemiptera",
"children": [
{"name": "Miridae",
"children": [
{"name": "Kanakamiris", "children":[]},
{"name": "Neophloeobia",
"children": [
{"name": "incisa", "children":[] }
]}
]}
]},
{"name": "Lepidoptera",
"children": [
{"name": "Nymphalidae",
"children": [
{"name": "Ephinephile",
"children": [
{"name": "rawnsleyi", "children":[] }
]}
]}
]}
]}
}
編集:ROOT
マスター親ノードが1つしかないd3の例の構造に準拠するために、元の必要なデータ構造をすべてノード内に含めました。
私は一般的な設計パターンを理解しようとしています。おまけとして、javascript、php、または python のいずれかでいくつかのソリューションを見たいと思っています。javascript が私の好みです。php に関して: 私が実際に使用しているデータは、結果を json としてエンコードする php スクリプトによるデータベースへの呼び出しから取得されます。php スクリプトのデータベースの結果は、それが php ベースの回答に使用される場合、順序付けられた配列 (以下を参照) です。
Array
(
[0] => Array
(
['Rank_Order'] => 'Hemiptera'
['Rank_Family'] => 'Miridae'
['Rank_Genus'] => 'Kanakamiris'
['Rank_Species'] => ''
) ........
ここで:
'Rank_Order'
isParentOf 'Rank_Family'
isParentOf 'Rank_Genus'
isParentOf'Rank_Species'
ここでphpソリューションに焦点を当てた同様の質問をしましたが、唯一の答えはサーバーで機能していません。何が起こっているのかよくわかりません。そのため、デザインパターンの観点からこの質問をし、参照を含めたいと思いますJavaScriptとd3.jsでの私の実際の使用に。