为什么我的d3强制布局会爆炸
why does my d3 force layout explode
我正在尝试构建一个d3力布局,它基本上是有效的,但动画的前一秒左右有点古怪。我从窗口中间开始所有节点,它们或多或少地到达我希望它们到达的位置,但它们要做的第一件事是在安定下来之前爆炸到窗口边缘或更远的地方。布局最终或多或少地按照我的意愿进行,但在当前状态下,我无法真正向客户展示它,因为一开始它有多古怪。
我试过对重力、电荷、链接距离和摩擦值感到不安,但似乎我只能通过改变条件来摆脱这种行为,这样,如果我喜欢最终结果,那里的路径就会很奇怪。如果那里的道路不古怪,那么最终的结果就不好。
force = d3.layout.force()
.nodes(data.nodes)
.links(data.edges)
.size([w, h])
.charge( -500 )
.gravity( 1 )
.linkDistance([50])
.friction(.9);
这是我对武力声明的最新修订。所以我的问题是,我是在动画开始时无意中做了一些鼓励这种爆炸性的事情,还是这只是它的工作方式,每个人都同意一开始就不要注意到那个小打嗝。
这是一个JSFiddle:http://jsfiddle.net/tsgouros/a5u62udv/同样的事情,放慢速度,这样你就可以看到一开始的混乱:http://jsfiddle.net/tsgouros/a5u62udv/1/
问题是,当您将所有节点放置在同一位置时,初始排斥力会非常强,以至于所有东西都会像您所观察到的那样爆炸。最好将所有内容初始化为随机位置,这样就不会出现这种效果。在您的情况下,可以使用w * Math.random()
和h * Math.random()
。
在此处完成演示。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 我的单元测试选项是什么
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 我的职位回报太快了,如何做出承诺
- 我的jQuery插件参数没有正确启动,遇到了问题
- 如何识别我的网站中的慢速设备
- 如何将JSON数据导入我的ejs模板
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 知道为什么我的旋转木马不会自动更改图片吗
- 我的模板未被解析
- 为什么jquery悬停在jsfiddle中可以工作,而在我的html布局中却不能
- JQuery Mobile破坏了我的布局:如何禁用自动打字
- 如何让javascript在Asp.Net中注入到我的布局中的视图中进行渲染
- 在 CakePHP 中,现在 View->addScript() 已被弃用,我如何向我的布局添加脚本*一次*
- 如何在我的力布局 D3 中停止标签交互
- 为什么我的d3强制布局会爆炸
- 使HTML5头工作与IE - HTML5 Shiv不修复我的布局
- 我如何保持我的调整大小动画(javascript)不会弄乱我的(css)"浮动“;布局
- 在我的响应式设计布局中修复了固定头部与锚功能的错误