1

我想绘制一个由节点和边组成的图形,使用弹簧布局算法(一种力导向布局)一旦布局了图形,我想让用户交互地添加新节点,并让布局演变,即在保持先前“形状”的同时定位新节点(不要过多地移动已经定位的节点)。

我的意思是WordVishttp://www.wordvis.com所做的事情。

我目前正在使用GraphDracula库中提供的弹簧布局器。这是一个“简单”的,这意味着如果你重新布局图形,你可能会得到一个完全不同的布局(我认为这是由于Math.rand算法中的调用)

做我想做的事情的算法/策略是什么?

我看到 graphdracula 的布局器将初始节点 pos 设置为零,然后迭代以计算最终节点的位置。假设我添加了一组与:newNodes相邻的节点expandedNode以保持现有形状,是否足以将每个 的初始位置设置为newNodes一个,expandedNode然后再次将力施加到所有节点?

您是否有任何指向算法的指针,该算法不仅可以将图形布局一次,而且还可以让您添加新节点来重新布局整个图形而无需过多更改绘图?

欢迎任何提示。

我目前正在使用 javascript,但语言并不重要。

4

1 回答 1

0

您可以为此使用Gephi

  1. 导入您的图表
  2. 在 Layouts 面板中,使用 ForceAtlas 渲染您的图形,然后停止布局。
  3. 选择所有节点,右键单击并“设置”节点。他们不会动。
  4. 添加新节点和链接。
  5. 再次运行相同的布局。

当然,这不是一个完美的解决方案,但如果不添加太多连接图形不同区域的新节点,这个技巧将合理地工作。

于 2012-02-25T15:05:15.497 回答