2014-01-14 34 views
3

对于相同的节点,我有两个可折叠的强制树。从一个强制有向图转换到另一个d3js图

我还没有看到一个例子,我们可以从一棵树过渡到另一棵树,并在d3js中进行节点过渡和边缘重构。

有没有办法做到这一点?

另一个相关的问题是,我们可以初始化每个节点对于强制指导图的位置吗?

编辑:这是一个example。我有两棵树,链接是一棵,并且我有另一棵树,它们具有相同的分子但是不同的树结构。我认为如果我可以在不同的树之间为相同的分子或实体生成动画,那将会很好。

+0

你是什么意思由*距离函数*?你的意思是'linkDistance'还是你指的是你在'tick'函数中执行的一些计算? –

+0

@ t.888,不好意思,混乱,距离函数是我得到linkDistance和树结构的方式,但是我觉得linkDistance在有向图中并不是很明显。 – user2149631

+0

你可以在节点上设置'x'和'''属性来初始化它们的位置,然后将节点数组交给强制布局,但是当将多个节点设置到同一个位置时,我遇到了问题 - 它使图形走疯。 –

回答

5

原则上,这些是要遵循的步骤。

  • 停止强制布局来冻结节点的位置。
  • 消失链接(例如淡出)。
  • 将节点转换到新位置。这可以通过在旧数据上设置新位置或完全更改数据,然后使用与tick处理程序中的代码相同的代码来执行具有转换的力布局
  • 重新添加链接。
  • 如果新布局也使用强制布局,请启动该布局。

我已经实现了这个here的一个例子。我使用两组数据和两个力布局。首先,只显示第一个力布局的节点和链接,第二个仅在后台运行。然后,第一个停止,我按照上面列出的步骤。

这不会满足所有要求(例如,关于节点应如何转换),但可以用作此类实现的起点。

+1

......并且如果被低估的人可以解释这个答案如何没有帮助,那将会非常有帮助。 –

+0

我有一个问题:当更新链接和节点位置时,force0的tick函数是否需要更改为null? – user2149631

+0

不会。如果强制布局停止,它将不会被调用。 –

相关问题