gpt4 book ai didi

javascript - 重置链接强度 D3 力

转载 作者:行者123 更新时间:2023-12-03 00:50:53 29 4
gpt4 key购买 nike

我有一个 fiddle :https://jsfiddle.net/mvLf579a/284/

此 fiddle 允许您使用 D3 径向布局来布置力网络,并将布局重置为默认力布局。但是,重置时链接强度似乎无法正常工作。

这是径向函数:

function radial() {
simulation
.force("charge", d3.forceCollide().radius(10))
.force("r", d3.forceRadial(function(d) {
return 100
return d.id < 5 ? 100 : 200;
}, width / 2, height / 2).strength(function(d) {
return 1
// set radial force to 0 if it has the id we're looking for
if(d.id == 3) return 0
// otherwise keep the strength at 1
else return 1
})
)
// turning off previously set forces
//.force('link', null)
.force('x', null)
.force('y', null)

simulation.alpha(1).restart()
}

这是重置功能:

function reset(){
simulation
.force("link", d3.forceLink()
//.id(function(d) {return d.id;})
.strength(1))
.force("charge", d3.forceManyBody())
.force('x', d3.forceX(width / 2))
.force('y', d3.forceY(height / 2))
.force('r', null)

simulation.alpha(1).restart()

}

我认为使用以下行会重置链接和链接强度:

  .force("link", d3.forceLink().strength(1))

如果您打开 fiddle ,拖动链接的节点,它们将随之拖动其他节点。 (请记住,我已经复制了数据,因此有时当您拖动一个节点时,它会拖动另一个节点)。

然后按“径向”,这会将它们布置在径向布局中。

然后按“重置”,这应该会回到开始的状态,但似乎不起作用。

感谢任何帮助,谢谢

最佳答案

您不得添加新的链接力,而只能修改现有的链接力

function reset() {
simulation.force("link").strength(1);
simulation
// .force("link", d3.forceLink()
// //.id(function(d) {return d.id;})
// .strength(1))
.force("charge", d3.forceManyBody())
.force('x', d3.forceX(width / 2))
.force('y', d3.forceY(height / 2))
.force('r', null)

simulation.alpha(1).restart()
}

关于javascript - 重置链接强度 D3 力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53048804/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com