D3.js force-directed graph, reduzieren Rand Kreuzungen, indem Sie die Kanten abstoßen

Also ich habe eine Seite, die bereits die zieht ein force-directed-graph, wie in der Abbildung hier.

Und das funktioniert auch. Ich bin mit dem JS aus hier, mit ein paar tweaks, um sich auszubreiten die Knoten etwas schöner.

Diese sind mehr oder weniger die einzigen Unterschiede:

d3.json("force.json", function(json) {
  var force = d3.layout.force()
      .gravity(0.1)
      .charge(-2000)
      .linkDistance(1)
      .linkStrength(0.1)
      .nodes(json.nodes)
      .links(json.links)
      .size([w, h])
      .start();

Wo die Verringerung der link-Stärke scheint sich das links mehr wie Federn, so wird es ähnlich wie die Fruchterman & Reingold Technik oft verwendet. Das funktioniert auch Recht gut, aber nur für relativ kleine Graphen. Bei größeren Graphen die Anzahl der Kreuzungen geht nur bis - wie man erwarten würde, aber die Lösung es landet normalerweise bei weitem nicht optimal. Ich bin nicht auf der Suche nach einer Methode, um die optimale Lösung, ich weiß, das ist sehr schwierig. Ich möchte nur, es zu haben einige grobe Ergänzung, zu zwingen versucht, die Linien auseinander, ebenso wie Knoten.

Gibt es einen Weg, um eine Abstoßung zwischen in-links, als auch zwischen den Knoten? Ich bin nicht vertraut mit der Art D3-force arbeitet, und ich kann nicht scheinen, etwas zu finden, das sagt, dass das möglich ist...

haben Sie jemals herausfinden?
Leider nicht. Ich wollte nicht gehen, eintauchen in die js-obwohl, wie ich bin nicht vertraut mit der Sprache. Ich habe versucht, mit einer tatsächlichen Fruchterman & Reingold Technik, aber das Ergebnis war noch nicht so gut, als wenn ich zog die Knoten, etwa von hand.
Ich war eigentlich mit networkX (ein python-Modul) und matplotlib, aber Sie haben eine D3.js Beispiel auf Ihrer website, die sieht ganz nett aus, deshalb versuchte ich es.
Visualisierung von großen Graphen ist schwierig... ich weiß, das löst das problem nicht, aber vielleicht finden Sie meine networkX-port hilfreich: felix-kling.de/JSNetworkX. Es nutzt d3 als gut, und Sie können Sie leicht Zoomen in und aus auf die Teile des Graphen, die können es einfacher machen, um es zu untersuchen.
hat das hinzufügen von Funktionalität zu den beiden anderen als die Zoom-in und Zoom-out? Es ist nicht so, dass meine Grafiken ist big persay, dass Sie mehr sind sehr hoch connectd - Sie sind irgendwo in der region von 40 Knoten

InformationsquelleAutor will | 2012-08-17

Schreibe einen Kommentar