2013-04-10 6 views
15

Es gibt zahlreiche Beispiele für Kraft-orientierte Graphen (dh Knoten und Links) und kollabierbaren Bäumen (dh Eltern-Kind-Knoten), aber ich kann kein Beispiel für die Kombination von finden diese - anders als einige 1-Level-Cluster-Netzwerke wie diese - http://static.cybercommons.org/js/d3/examples/force/force-cluster.html.Zusammenklappbare/hierarchische UND Force-gerichtete Grafik in d3.js

enter image description here

Das heißt ich brauche eine vollständige Hierarchie von Knoten (mit einer beliebigen Anzahl von Stufen) mit Verbindungen zwischen den verschiedenen Knoten in der Hierarchie.

Hat jemand ein Beispiel dafür?

Und wenn ja, möchte ich schließlich die Hierarchien zusammenklappbar sehen und alle der Links von den Kindern werden "erhöht" bis zum Eltern, wenn es zusammengebrochen ist.

Cheers, Tim

Dies ist ähnlich zu dem, was ich die jsonData wie ...

aussehen erwarten würde
{ 
"nodes": [ 
    { 
     "name": "Parent 1", 
     "children": [ 
      { 
       "name": "Child 1", 
      }, 
    }, 
    { 
     "name": "Parent 2", 
     "children": [ 
      { 
       "name": "Child 2", 
      }, 
. 
. 
. 
"links": [ 
    { 
     source: "Child 1", 
     target: "Child 2" 
    }, 
. 
. 

Antwort

3

Ich bin auch daran interessiert. Ich habe zwei Beispiele gefunden, die ich gerne kombinieren würde.

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

+0

Ja, genau ... man die d3 verwendet "Links", um Eltern und Kinder zu verbinden. Die andere hat explizite "Verbindungen" zwischen den Knoten über Hierarchien (ob sie Eltern oder Kinder selbst sind). – DrTim

+0

Ich habe nicht versucht, zu zwei zu verschmelzen, oder? – Marinus

+0

nein. Es gibt mehrere Beispiele für gruppierte Diagramme auf einer Ebene gemäß dem obigen Link, und das Beispiel "Hierarchical Edge Bundling" - http://mbostock.github.io/d3/talk/20111116/bundle.html - verwendet eine ähnliche Datenstruktur (aber nur Blattknoten können verbunden werden). Immer noch kein Glück mit einer Lösung ... – DrTim

7

ich versuche, hier beide Beispiele zu verschmelzen meine 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(); 
}