2016-11-12 5 views
0

d3ツリーグラフのようなものを描画するための良いデータモデルとなるべきものについて意見を得たいと考えています。子ノードが2つの親ノード、時には階層の異なる階層の親ノードにリンクされるシナリオがあるため、ツリーグラフは私のためには機能しません。私は別のデータモデルを使用するためにd3ツリーグラフを変更する予定です。ここでは専門家の意見に本当に感謝しています。以下は、私がデータモデルができると考えるものの単純な表現です。 1つは階層モデルであり、もう1つはフラットです。誰かが実際にd3ツリーデータモデルに干渉していますか?どんな助力/意見も大歓迎です!助けを前にありがとう!D3ツリーグラフ変更データモデル

var hierarchicalData = [ 
    { 
    "id": "n1", 
    "children": [ 
     { 
     "id": "n1-a", 
     "children":[ 
      { 
      "id": "n1-a-1" 
      } 
     ] 
     }, 
     { 
     "id": "n1-b", 
     "children":[ 
      { 
      "id": "n1-b-1" 
      } 
     ] 
     }  
    ] 
    }, 
    { 
    "id": "n2", 
    "children": [ 
     { 
     "id": "n2-a", 
     "children":[ 
      { 
      "id": "n2-a-1" 
      } 
     ] 
     } 
    ] 
    } 
]; 

以下は、まったく同じ階層モデルのフラット表現ですが、階層を表す「レベル」を含んでいます。

{ 
    "n1":{ 
    "level": 0, 
    "children": ["n1-a", "n1-b"],  
    }, 
    "n1-a":{ 
    "level": 1, 
    "children":["n1-a-1"] 
    }, 
    "n1-a-1":{ 
    "level": 2, 
    "children":[] 
    }, 
    "n1-b":{ 
    "level": 1, 
    "children":["n1-b-1"] 
    }, 
    "n1-b-1":{ 
    "level": 2, 
    "children":[] 
    }, 
    "n2":{ 
    "level": 0, 
    "children": ["n2-a"] 
    }, 
    "n2-a":{ 
    "level": 1, 
    "children": ["n2-a-1"] 
    }, 
    "n2-a-1":{ 
    "level": 2, 
    "children":[] 
    } 
} 

答えて

0

子ノードが複数の親を持つことができる場合、それは定義によってツリーグラフではありません。 ツリーを作成したいが、達成しようとしているものに本当に依存する場合は、いくつかのUIアプローチがあります。

私はd3ツリーを使用して企業のOrg-chartを表示しました。 いくつかの企業には、直属のマネージャと副マネージャを持つ従業員がいます。 私たちがしたことは、直属のマネージャにのみ接続を示していることです。 しかし、私たちは従業員ノード上のマウスオーバーで他のマネージャへのリンクを提示しました。 これは、データモデルソリューションよりUIソリューションのほうが多く、他にも多くの可能性があります。

もう1つの選択肢は、My-heritageがファミリーツリーで行ったことを行うことです。彼らは各ノードの両方の親を表示していますが、それらのうちの1つだけが提示された残りのツリーに接続されています。

+0

ご回答いただきありがとうございます。@Tomer Sela私が達成しようとしていることは、定義上、木ではないことに同意します。私は視覚的表現の観点からd3ツリーを使用したいと思います。なぜ木が私のためにはうまくいかないのか、私が明らかにならなかったら謝る。子は複数の親を持つことができます(組織図のような階層にはありません)。ファミリーツリーの構造は、それ以上の変更を加えても機能するかもしれません。これが、私が拡張可能な堅牢なデータモデルを構築しようとしている理由です。 –

関連する問題