2013-06-24 3 views
8

Ich benutze d3 Force-Layout, um ein Diagramm zu erstellen, und speichern Sie dann die Positionen der Knoten in einer Datenbank.Wie kann ich ein Diagramm mit dem d3-Force-Layout anzeigen, bei dem die Anfangspositionen eingestellt sind und überhaupt keine Bewegung vorhanden ist?

Das nächste Mal, wenn ich das Diagramm anzeigen möchte, lese ich die Positionen aus der Datenbank in die Knoten und starte dann das Force-Layout.

Das bewirkt, dass sich das Layout leicht bewegt.

Gibt es eine Möglichkeit, den Graphen mit den gespeicherten Knotenpositionen anzuzeigen, ohne force.start() aufzurufen?

Was ich will, ist ein "nur lesen" -Modus, um eine stabile Grafik von jemand anderem früher erstellt zu zeigen.

/Hans

Antwort

10

Ich empfehle Ihnen, die documentation of the force layout zu lesen. Es ist wirklich gut.

Wie Sie bereits erwähnt haben, müssen Sie die Attribute px und py für jeden Knoten festlegen. Dann können Sie in jedem Knoten das Attribut fixed auf true setzen.

Dies bedeutet, dass die Berechnung von force.start() keine Auswirkungen hat.


Eine andere Sache, die Sie versuchen können, ist der Alpha-Wert auf 0 zu setzen, und dann die Simulation starten:

force.alpha(0) 
    .start() 

Ich bin nicht sicher, ob diese Methode funktioniert. Veröffentlichen Sie ein jsFiddle, wenn dies nicht der Fall ist.

+1

Oh ich habe die Dokumentation hin und her gelesen, aber ich bin einfach nicht schlau genug zu realisieren, dass ich das fixed Attribut verwenden soll :-). Es funktioniert super! Danke! – hansbrattberg

+0

Das ist normal, keine Sorge. Ich bin froh, dass es geholfen hat. Sie können die Antwort akzeptieren, wenn es Ihr Problem gelöst hat. –