igraph 1.0 中 Fruchterman-Reingold 布局的 maxdelta 等价物?
maxdelta equivalent for Fruchterman-Reingold layouts in igraph 1.0?
给定一个时态图(每条边都有一个时间属性),我有一个脚本可以使用 Fruchterman-Reingold 布局绘制图的演变。我的脚本基于这个例子:Temporal Networks with igraph and R with 20 lines of code.
其中一个技巧是从上一个快照 t-1
的布局开始计算当前快照 t
的布局,然后使用 maxdelta
限制节点位移,因此快照之间有一种平滑过渡的感觉。这是一个动画示例:https://vimeo.com/53071346
在 igraph 1.0 中,布局函数 layout.fruchterman.reingold
变为 layout_with_fr
,maxdelta
参数消失,快照之间的过渡过于跳跃。
如何在igraph 1.0中实现同样的效果?
如您所见,Fruchterman-Reingold 布局已在 igraph 1.0 中从头开始重写,maxdelta
参数消失为 "side effect"(新实现不支持它)。我不知道新的实现是否错过了参数只是因为没有时间来实现或者因为存在阻止实现的固有限制,但无论哪种方式,请在 GitHub 上提交问题。我不能做任何承诺,因为我没有编写那部分代码,但也许它很快就会被重新添加。
同时,通过查看 source code of the algorithm,温度参数似乎是最大位移的限制因素。您可以尝试将最大位移发送为 start.temp
并将迭代次数设置为 1 - 这会将沿 X 轴和 Y 轴的位移限制为 start.temp
。
另一种选择是layout.graphopt()
函数,它似乎支持直接用max.sa.movement
参数限制最大位移。
给定一个时态图(每条边都有一个时间属性),我有一个脚本可以使用 Fruchterman-Reingold 布局绘制图的演变。我的脚本基于这个例子:Temporal Networks with igraph and R with 20 lines of code.
其中一个技巧是从上一个快照 t-1
的布局开始计算当前快照 t
的布局,然后使用 maxdelta
限制节点位移,因此快照之间有一种平滑过渡的感觉。这是一个动画示例:https://vimeo.com/53071346
在 igraph 1.0 中,布局函数 layout.fruchterman.reingold
变为 layout_with_fr
,maxdelta
参数消失,快照之间的过渡过于跳跃。
如何在igraph 1.0中实现同样的效果?
如您所见,Fruchterman-Reingold 布局已在 igraph 1.0 中从头开始重写,maxdelta
参数消失为 "side effect"(新实现不支持它)。我不知道新的实现是否错过了参数只是因为没有时间来实现或者因为存在阻止实现的固有限制,但无论哪种方式,请在 GitHub 上提交问题。我不能做任何承诺,因为我没有编写那部分代码,但也许它很快就会被重新添加。
同时,通过查看 source code of the algorithm,温度参数似乎是最大位移的限制因素。您可以尝试将最大位移发送为 start.temp
并将迭代次数设置为 1 - 这会将沿 X 轴和 Y 轴的位移限制为 start.temp
。
另一种选择是layout.graphopt()
函数,它似乎支持直接用max.sa.movement
参数限制最大位移。