gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:26:43 27 4
gpt4 key购买 nike

我想绘制一个由节点和边组成的图形,使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com