Ich füge nur das hinzu, um mich selbst (und möglicherweise andere) Zeit zu sparen, die Antworten aus den Demos zu graben. Ich bin auch neu in D3, also hoffe ich, dass dies für andere genauso hilfreich ist wie für mich.
Verwenden Sie d3.hierarchy() & node.descendants(), um Knoten und Links zu erhalten.
Kann auch ein wenig abkürzen, wenn gewünscht, was immer noch alle oben genannten tut.
var root = d3.hierarchy(jsonData),
nodes = tree(root).descendants(),
links = nodes.slice(1);
Wenn Sie Knoten/Links innerhalb einer Veranstaltung greifen müssen. Zum Beispiel beim Ziehen eines Knotens bei Verwendung eines Baumdiagramms (und ich bin mir sicher, dass dies auch anderswo nützlich sein könnte).
var drag = d3.drag()
.on("start", function dragStart(d) {
var nodes = d.descendants(),
links = nodes.slice(1);
});
Oder alternativ node.links() verwenden, bei denen jedes Glied Quell- und Zieleigenschaften festlegt.
var drag = d3.drag()
.on("start", function dragStart(d) {
var nodes = d.descendants(),
links = d.links();
});
Sie würden denken, dies auch in diesem Fall funktionieren würde, aber es funktioniert nicht (doofe).
var root = d3.hierarchy(jsonData),
nodes = tree(root).descendants(),
links = nodes.links(); // <-- only works on a single node, resort to slice(1).
Die 'd3.tree' [api] (https://github.com/d3/d3-hierarchy/blob/master/README.md#tree) wurde in Version 4 geändert und es gibt nicht ein zu einer Beziehung zwischen den Methoden. Ich würde vorschlagen, dass Sie von einem [Version 4 Beispiel] (https://bl.ocks.org/d3noob/b024fcce8b4b9264011a1c3e7c7d70dc) ausgehen und davon abarbeiten. – Mark