修改d3's力布局”;退火”;日程
modifying d3's force layout "annealling" schedule
我有一个d3力布局图viz工作得很好,但它经常过早地被"卡住"。例如,节点正朝着一个好的位置抖动,如果"碰撞"它们(再次为它们的位置和start()
注入一点随机性),它们最终会到达那里。如果我减少friction
,问题也会变得更糟,因为用户认为它太疯狂了。
我在force.js
源代码中提到了"annealing"(模拟退火),而暴露的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);
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 使用agility.js进行页面布局和合成
- 同位素库错误:未捕获错误无布局模式包装生产线8
- 如何实现此布局
- 有没有一个javascript图形绘制库可以进行气球树布局
- vaadin:使用自定义布局集成angular js
- 布局中的项目管理
- 如何操作d3js树布局
- 在HTML/JavaScript中,有没有一种方法可以在图像开始加载时知道图像的最终布局尺寸
- 在链接d3强制布局中添加和删除类
- 为什么jquery悬停在jsfiddle中可以工作,而在我的html布局中却不能
- 骨干木偶-布局视图僵尸
- 以下数据布局在设置显示上向上移动:无
- 如何在Marionettejs中渲染根布局
- 使用jQuery库Packey来制作卡片布局,我可以用导航链接重新订购
- 布局引擎和javascript引擎之间的区别
- 布局/结构建议
- 同位素更新到V2,如何切换大小和布局
- JQuery Mobile破坏了我的布局:如何禁用自动打字
- 修改d3's力布局”;退火”;日程