图形布局:重新布局保留图形的形状

时间:2012-02-01 14:12:42

标签: java javascript algorithm graph graph-layout

我想使用弹簧布局算法(一种力导向布局)绘制由节点和边缘组成的图形 一旦图表布局,我想让用户以交互方式添加新节点,并且让布局发展,即定位新节点,同时保持先前的“形状”(不移动已经定位节点太多了。)

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

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

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

我看到graphdracula的layouter将初始节点pos设置为零,然后迭代计算最终节点的位置。 假设我在newNodes附近添加了一组节点expandedNode:以保持现有形状,是否足以将每个newNodes的初始pos设置为{{1}之一1}}然后再次将力施加到所有节点上?

你有没有指向一个算法的指针,它不仅可以设置一次图形,还可以添加新的节点重新布局整个图形而不会过多地改变图形?

欢迎任何提示。

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

1 个答案:

答案 0 :(得分:0)

您可以使用Gephi

  1. 导入图表
  2. 在“布局”面板中,使用ForceAtlas渲染图形,然后停止布局。
  3. 选择所有节点,右键单击并“结算”节点。他们不会动。
  4. 添加新节点和链接。
  5. 再次运行相同的布局。
  6. 当然,这不是一个完美的解决方案,但如果不添加太多连接图表不同区域的新节点,这个技巧将合理地工作。