java - 图布局 : re-layout preserving the shape of the drawing

标签 java javascript algorithm graph graph-layout

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

我的意思是类似于 WordVishttp://www.wordvis.com 上所做的事情.

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

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

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

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

欢迎任何提示。

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

最佳答案

你可以使用 Gephi为此:

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

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

关于java - 图布局 : re-layout preserving the shape of the drawing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9097232/

相关文章:

Java - 空变量是否需要内存空间

java - 将 spring-data-solr 升级到版本 1.3.1 时无法启动嵌入式 solr 服务器

javascript - typescript 错误 : Duplicate identifier 'LibraryManagedAttributes'

javascript - 在 Google Chrome 中注册 DOMContentLoaded

c++ - 在部分排序的数组中查找元素

java - 平衡括号,如何计算?

java - 重新绘制 javax 不起作用

algorithm - 避免曲折的高效路径查找算法

javascript - 我的外部硬盘被病毒感染,我发现了这个非常可疑的 JavaScript 文件。有人可以帮我分析这个文件吗?

java - 如何在计算矩阵和时提高性能