2013-04-10 10 views
15

Esistono numerosi esempi di grafici diretti alla forza (ad esempio nodi e collegamenti) e alberi comprimibili (ovvero nodi padre-figlio) ma non riesco a trovare un esempio della combinazione di questi - diversi da alcune reti cluster a 1 livello come questo - http://static.cybercommons.org/js/d3/examples/force/force-cluster.html.Grafico piegabile/gerarchico AND diretto alla forza in d3.js

enter image description here

Cioè ho bisogno di una gerarchia piena di nodi (con qualsiasi numero di livelli), con collegamenti tra i vari nodi in tutta la gerarchia.

Qualcuno ha avuto un esempio di questo?

E se così fosse, alla fine mi piacerebbe vedere le gerarchie essere collassabili e tutti i collegamenti dai bambini sono "elevati" fino al genitore quando viene compresso.

Cheers, Tim

Questo è simile a quello che mi aspetto il jsonData a guardare come ...

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

risposta

3

Sono interessato a questo anche. Ho trovato due esempi, che mi piacerebbe combinare.

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

+0

Sì, esattamente ... si usa il d3 'collegamenti' per connettere genitori e figli. L'altro ha "link" espliciti tra i nodi attraverso le gerarchie (che siano essi stessi genitori o figli). – DrTim

+0

Non ho tentato di unirmi a due, vero? – Marinus

+0

no. Esistono diversi esempi di grafici raggruppati a livello singolo come da link sopra, e l'esempio "Bundle Hierarchical Edge" - http://mbostock.github.io/d3/talk/20111116/bundle.html - utilizza una struttura dati simile (ma è possibile collegare solo i nodi foglia). Ancora senza fortuna con una soluzione ... – DrTim

7

cerco di unire le due esempi qui la mia 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(); 
}