animation - D3.js - 是否可以在力导向图和节点链接树之间设置动画?

标签 animation d3.js tree force-layout

我正在使用 D3.js库并查看力导向图演示:

http://mbostock.github.com/d3/ex/force.html

enter image description here

我也在查看节点链接树:

http://mbostock.github.com/d3/ex/tree.html

enter image description here

我想做的是:

- 从力导向图开始,当用户点击一个
节点,让它平滑地动画成一棵树,带有选定的节点
在中心。
- 然后,当用户点击 Canvas 中的任何空白区域时,它
应该动画回到力导向图。

有没有人以前做过这样的事情,或者对最好的方法有什么建议?我是 D3.js 的新手,不知道框架是否支持它。

最佳答案

您需要做的是停止力并将现有节点的转换应用于从其他布局派生的 x-y。所以你的函数看起来像这样:

force.stop();
d3.selectAll("g.nodes").transtion().duration(500)
    .attr("translate","transform("+newLayoutX+","+newLayoutY+")"

然后遍历您的节点数组并设置 x , y , px , py值以反射(reflect)新 XY .这将使您的节点知道当前 xy运行时力布局的位置 force.start()
你可以看看plotLayout()本例中的函数:

https://gist.github.com/emeeks/4588962

不过,这不依赖于第二个 d3.layout。您将遇到的问题是您需要一个用于树布局的分层数据集,这要求您按照分层布局中的预期将节点和边数据转换为 node.children 数组。我这样做的方法是复制数据集并手动将其展平,但可能有我不知道的更优雅的解决方案。

关于animation - D3.js - 是否可以在力导向图和节点链接树之间设置动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8986702/

相关文章:

javascript - 滚动到时开始动画

javascript - Css 过渡不适用于 React 中的条件渲染

c# - 如何为 ListBoxItem 创建动态磁贴效果?

algorithm - 不平衡树上基于 GPU 的包容性扫描

scala - 如何迭代 Scalaz 中的树

java - 进度条没有动画

javascript - 无法在 D3 中为 svg 元素着色

javascript - d3.scale.ordinal 的问题

javascript - 如何使用最新的d3加载json文件?

php - 将缩进列表解析为 bool 树