我想使用弹簧布局算法(一种力导向布局)绘制由节点和边缘组成的图形 一旦图表布局,我想让用户以交互方式添加新节点,并且让布局发展,即定位新节点,同时保持先前的“形状”(不移动已经定位节点太多了。)
我的意思是 WordVis 在http://www.wordvis.com处所做的事情。
我目前正在使用GraphDracula库中提供的弹簧布局。这是一个“简单”的,意味着如果你重新布局图形,你可能会得到一个完全不同的布局(我认为这是因为算法中对Math.rand
的调用)
做我想做的事情的算法/策略是什么?
我看到graphdracula的layouter将初始节点pos设置为零,然后迭代计算最终节点的位置。
假设我在newNodes
附近添加了一组节点expandedNode
:以保持现有形状,是否足以将每个newNodes
的初始pos设置为{{1}之一1}}然后再次将力施加到所有节点上?
你有没有指向一个算法的指针,它不仅可以设置一次图形,还可以添加新的节点重新布局整个图形而不会过多地改变图形?
欢迎任何提示。
我目前正在使用javascript,但语言并不重要。
答案 0 :(得分:0)
您可以使用Gephi:
当然,这不是一个完美的解决方案,但如果不添加太多连接图表不同区域的新节点,这个技巧将合理地工作。