2013-04-10 13 views
15

Istnieje wiele przykładów grafów skierowanych na siłę (tj. Węzłów i łączy) oraz zwijanych drzew (tj. Węzłów nadrzędny-podrzędny), ale nie mogę znaleźć przykładu połączenia te - inne niż niektóre jednopoziomowe sieci klastrowe, takie jak ta - http://static.cybercommons.org/js/d3/examples/force/force-cluster.html.Zwinięty/hierarchiczny I skierowany na siłę wykres w d3.js

enter image description here

To muszę pełną hierarchię węzłów (z dowolnej liczby poziomów) z powiązań pomiędzy różnymi węzłami w całej hierarchii.

Czy ktoś ma tego przykład?

A jeśli tak, ostatecznie chciałbym zobaczyć, jak hierarchie mogą być składane, a każdy z linków od dzieci jest "podniesiony" do rodzica, gdy jest zwinięty.

Cheers, Tim

Jest to podobne do tego, co będę oczekiwać jsonData wyglądać ...

{ 
"nodes": [ 
    { 
     "name": "Parent 1", 
     "children": [ 
      { 
       "name": "Child 1", 
      }, 
    }, 
    { 
     "name": "Parent 2", 
     "children": [ 
      { 
       "name": "Child 2", 
      }, 
. 
. 
. 
"links": [ 
    { 
     source: "Child 1", 
     target: "Child 2" 
    }, 
. 
. 

Odpowiedz

3

Jestem również zainteresowany w tym. Znalazłem dwa przykłady, które chciałbym połączyć.

http://bl.ocks.org/mbostock/1062288 http://graus.nu/d3/

+0

Tak, dokładnie ... jeden używa d3 "linki" do łączenia rodziców i dzieci. Drugi ma wyraźne "powiązania" między węzłami w hierarchii (niezależnie od tego, czy są to rodzice, czy same dzieci). – DrTim

+0

Nie próbowałem połączyć się z dwoma, prawda? – Marinus

+0

nie. Istnieje kilka przykładów pogrupowanych wykresów jednopoziomowych zgodnie z linkiem powyżej, a przykład "Hierarchical Edge Bundling" - http://mbostock.github.io/d3/talk/20111116/bundle.html - używa podobnej struktury danych (ale można podłączyć tylko węzły listkowe). Nadal nie ma szczęścia z rozwiązaniem ... – DrTim

7

próbuję połączyć oba przykłady tu mój fiddle

// Toggle children on click. 
function click(d) { 
if (d.children) { 
    d._children = d.children; 
    d.children = null; 
} else { 
    d.children = d._children; 
    d._children = null; 
} 
update(); 
}