我要解決這個:
1)一旦顯示圖形,我希望能夠拖動任意節點任何位置,部隊不干預;鏈路的長度會自動調整
第一:
當你讓你的矩形或圓形的節點,然後給它一個像這樣的類:
var circlesOrRects = svg.append("g").selectAll(".foo")
.data(force.nodes())
.enter()
.append("path")
.attr("class", "foo")//give it a class
力向圖後,下一步停止,修復如下所示的節點:
var force = d3.layout.force()
.nodes(d3.values(nodes))
.links(links)
.size([width, height])
.linkDistance(150)
.charge(-300)
.on("tick", tick)
.start()
.on("end", function(p) {
//using the class for selecting nodes.
d3.selectAll(".foo").each(function(d){
d.fixed=true;//thsi will fix the node.
});
});
現在在力停止後,您可以將節點拖到任何地方。
請注意,結束事件將被觸發,一旦強制阿爾法變爲0,只有這樣才能修復節點。
工作代碼here
可能有兩個辦法從什麼是馬克的回答表明不同。選擇哪一個在很大程度上取決於1)當力量仍在運行時或剛剛停止時,你想要拖動行爲嗎? 2)力量佈局是否會在初始停頓後重新加熱? – altocumulus