给定一个时间图(每个边都有一个时间属性)我有一个脚本来绘制使用Fruchterman-Reingold布局的图的演变。我的脚本基于这个示例:Temporal Networks with igraph and R with 20 lines of code。
其中一个技巧是从最后一个快照t
的布局开始计算当前snapshopt t-1
的布局,然后使用maxdelta
限制节点位移,以便是快照之间平滑过渡的感觉。这是一个动画示例:https://vimeo.com/53071346
在igraph 1.0中,布局函数layout.fruchterman.reingold
变为layout_with_fr
,maxdelta
参数消失,快照之间的转换过于跳跃。
我们怎样才能在igraph 1.0中达到同样的效果?
答案 0 :(得分:2)
正如您所注意到的,Fruchterman-Reingold布局已在igraph 1.0中从头开始重写,class users extends item {
function dothis() {
$e = new events();
$e->set(array('start' => 'today', 'end' => 'tomorrow'));
}
}
参数作为“副作用”消失(新实现不支持它)。我不知道新的实现是否因为没有时间来实现而错过了这个论点,或者因为存在阻碍实现的固有限制,但不管怎样,请在GitHub上提出问题。我不能做出任何承诺,因为我没有编写代码的那部分,但也许很快就会重新添加。
同时,通过查看source code of the algorithm,似乎温度参数是最大位移的限制因素。您可以尝试将最大位移发送为maxdelta
并将迭代次数设置为1 - 这将限制沿X轴和Y轴的位移start.temp
。
另一种选择是start.temp
函数,它似乎支持使用layout.graphopt()
参数直接限制最大位移。