我正在使用 D3js 創建一個力有向圖。
如何更改連接的強度?就我而言,我想降低連接的強度,以便節點之間的距離通常更遠,并且整個圖形變得更加松散且更可用。(有關當前結果,請參見末尾的影像)。更改 value 屬性只會更改連接的顯示厚度,而不是它們的“物理”強度。
JSON資料(超過12000行,所以我不想直接放在這個帖子里):
uj5u.com熱心網友回復:
對于 d3 forceSimulation 中的任何屬性更改,您可以參考此 api https://github.com/d3/d3-force并更改以下力模擬的初始化。
var simulation = d3.forceSimulation()
.force("link", d3.forceLink().id(function(d) {
return d.id;
}))
.force("charge", d3.forceManyBody())
.force("center", d3.forceCenter(width / 2, height / 2));
據我了解,您想增加鏈接之間的距離。為此,您可以使用距離屬性并將其添加到模擬的初始化中,如下所示。您可以參考上面的api來嘗試鏈接、節點、中心和費用的各種屬性。將.distance([200]) 添加到您的鏈接中,看看這就是您想要的。
var simulation = d3.forceSimulation()
.force("link", d3.forceLink().id(function(d) {
return d.id;
}).distance([200]))
.force("charge", d3.forceManyBody())
.force("center", d3.forceCenter(width / 2, height / 2));
此外,如果您不想要重疊節點,請在力模擬中添加碰撞屬性,在 0 和 1 之間更改強度。您必須通讀 api 中的各種屬性并在初始化中添加它們,直到找到所需的結果
var simulation = d3.forceSimulation()
.force("link", d3.forceLink().id(function(d) {
return d.id;
}).distance([100]))
.force("charge", d3.forceManyBody())
.force("center", d3.forceCenter(width / 2, height / 2))
.force("collide", d3.forceCollide().strength([0.3]));
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/491656.html
上一篇:選擇特定節點NetworkD3
