图形布局:重新布局保留绘图的形状
Posted
技术标签:
【中文标题】图形布局:重新布局保留绘图的形状【英文标题】:Graph Layout : re-layout preserving the shape of the drawing 【发布时间】:2012-02-24 05:11:31 【问题描述】:我想绘制一个由节点和边组成的图,使用spring布局算法(一种力导向布局) 一旦图表布局好,我想让用户交互地添加新节点,并让布局演变,即在保持之前的“形状”的同时定位新节点(不移动已经定位节点太多)。
我的意思类似于 WordVis 在http://www.wordvis.com 所做的事情。
我目前正在使用 GraphDracula 库中提供的 spring 布局器。这是一个“简单”的,这意味着如果你重新布局图形,你可能会得到一个完全不同的布局(我认为这是由于算法中对Math.rand
的调用)
做我想做的事情的算法/策略是什么?
我看到 graphdracula 的布局器将初始节点位置设置为零,然后迭代计算最终节点的位置。
假设我添加一组节点newNodes
与expandedNode
: 相邻,以保持现有形状,是否足以将每个newNodes
的初始位置设置为expandedNode
的一个,然后施加力再次到所有节点?
您是否有任何指向算法的指针,该算法不仅可以对图形进行一次布局,而且还可以让您添加新节点来重新布局整个图形而无需过多更改绘图?
欢迎任何提示。
我目前正在使用 javascript,但语言并不重要。
【问题讨论】:
【参考方案1】:您可以为此使用Gephi:
-
导入您的图表
在“布局”面板中,使用 ForceAtlas 渲染图表,然后停止布局。
选择所有节点,右键单击并“设置”节点。他们不会动。
添加新节点和链接。
再次运行相同的布局。
当然,这不是一个完美的解决方案,但如果不添加太多新节点来连接图的不同区域,这个技巧会很有效。
【讨论】:
以上是关于图形布局:重新布局保留绘图的形状的主要内容,如果未能解决你的问题,请参考以下文章
为什么android studio会自动在图形布局编辑器中重新排序视图和元素