2

早上好,

刚从很棒的 d3js 库开始......

我只想显示具有强制定向布局的图形的一部分。这个想法是将一个节点声明为“中心”,并显示距离该中心节点两(例如)距离内的所有节点,中心节点的邻居和邻居的邻居。如果用户单击其中一个显示的节点,它将成为“新”中心节点并显示不同的“子图”。我想知道是否有实现这种子图布局的示例,以及是否已经在 d3js 中实现了某种“节点距离”算法。

非常感谢

马丁

更新:刚刚找到了修改强制布局的示例,该示例说明了如何从强制定向布局中添加和删除节点和边。

4

2 回答 2

7

我刚刚上传了一个交互式力定向子图的“概念证明级别”。

http://justdharma.com/d3/sub-graph/

在这个例子中,我在后台使用了backbonejs。作为我第一次使用backbonejs 实现某些东西,我肯定会以非常粗暴的方式使用它。虽然这个例子可能阐明了如何实现交互式子图的一种方式,但它肯定不是一个模板如何做到这一点 - 正如所说的只是一个概念验证黑客......

于 2013-10-02T11:36:37.613 回答
2

这没有在 D3 中实现,我不知道有任何示例。您需要做的是:

  • fixed新中心节点的属性设置为true,以防止力布局改变其位置。
  • 将同一节点的px和属性设置为中心位置。py
  • 对于力布局中的每个节点,计算到新中心节点的最短路径。
  • 根据每种情况下路径的长度,删除或保留节点。

这里最棘手的部分是计算从每个节点到新中心的路径,但即使这是一个非常标准的算法问题。另外要记住的是,您需要修改包含原力布局的节点和链接的数据结构,即您不能为力布局设置新的节点和链接并期望一切顺利进行。

于 2013-09-12T11:42:46.167 回答