Stop Force Layout on d3js and start free dragging

2020-06-03 08:38发布

问题:

I'm using the force layout to represent a directed unweighted network. My inspiration comes from the following example: http://bl.ocks.org/mbostock/1153292

Since my own data are really a mess, I'd like to stop the layout and move nodes by dragging them manually. I'd also like that the movement of a node doesn't change the position of others. And it's necessary that links become longer, to reach the node which has been moved.

Is there a simple way to do this?

回答1:

At the end I found this related question which implements a solution which I'll adopt.

D3 force directed graph with drag and drop support to make selected node position fixed when dropped

http://bl.ocks.org/norrs/2883411



回答2:

function nameOfFunction () {
    d3.selectAll(".classOfYourNodes").each(
        function(d) {
            d.fixed = true;
        }
    )
}

The method .each calls the anonymous function, which in this case sets the "fixed" attribute to true for every node within the selection.

Edit: The above is in regards to your comment about wanting to stop all of the nodes and not have the force simulation continue when you drag a node, as calling force.stop() does.