D3.js力布局 - 仅显示图形的一部分

D3.js Force Layout - showing only part of a graph

本文关键字:显示图 图形 一部分 显示 js 布局 D3      更新时间:2023-09-26

早上好,

刚从真棒D3JS库开始...

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

多谢

马丁

更新:刚刚找到了修改力布局的示例,该示例阐明了如何在力导向布局中添加和删除节点和边缘。

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

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

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

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

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

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