gpt4 book ai didi

javascript - 修改 d 3's force layout "退火“计划

转载 作者:搜寻专家 更新时间:2023-11-01 04:41:17 25 4
gpt4 key购买 nike

我有一个 d3 力布局图可视化效果很好,但它经常过早地“卡住”。例如,节点正朝着一个好的位置摇晃,如果“碰撞”它们(向它们的位置注入(inject)一点随机性并再次 start() ,它们最终会到达那里。问题也会变得更糟,如果我减少了摩擦,因为用户认为它太疯狂了。

我在 force.js source code 中看到“退火”(ala 模拟退火)的提及,并且公开的 alpha 参数是一个关键因素。我想知道是否有人想出如何直接管理一般退火计划(没有修补 force.js!)?

最佳答案

答案的核心是@meetamit的评论(加速alpha的衰减)。您还可以在低于阈值时停止调用布局,您还可以通过向节点/链接移动添加转换来处理“抖动”。

animationStep = 200;
force.on('tick', function() {
node.transition().ease('linear').duration(animationStep)
.attr('transform', function(d) {
//your node transitions here
});
var alpha = force.alpha();
force.stop();
setTimeout(function() {
if (!alpha > 0.001) {
force.alpha(alpha * 0.9);
}
}, animationStep);
};
force.on('tick', tick);

关于javascript - 修改 d 3's force layout "退火“计划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26638331/

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