【发布时间】:2012-02-24 05:11:31
【问题描述】:
我想绘制一个由节点和边组成的图,使用spring布局算法(一种力导向布局) 一旦图表布局好,我想让用户交互地添加新节点,并让布局演变,即在保持之前的“形状”的同时定位新节点(不移动已经定位节点太多)。
我的意思类似于 WordVis 在http://www.wordvis.com 所做的事情。
我目前正在使用 GraphDracula 库中提供的 spring 布局器。这是一个“简单”的,这意味着如果你重新布局图形,你可能会得到一个完全不同的布局(我认为这是由于算法中对Math.rand 的调用)
做我想做的事情的算法/策略是什么?
我看到 graphdracula 的布局器将初始节点位置设置为零,然后迭代计算最终节点的位置。
假设我添加一组节点newNodes 与expandedNode: 相邻,以保持现有形状,是否足以将每个newNodes 的初始位置设置为expandedNode 的一个,然后施加力再次到所有节点?
您是否有任何指向算法的指针,该算法不仅可以对图形进行一次布局,而且还可以让您添加新节点来重新布局整个图形而无需过多更改绘图?
欢迎任何提示。
我目前正在使用 javascript,但语言并不重要。
【问题讨论】:
标签: java javascript algorithm graph graph-layout