2013-06-24 74 views
8

我使用d3 force布局来构建图形,然后将节点的位置存储在数据库中。如何使用d3力布局显示图形,初始位置已设置且完全不动?

下次我想要显示图形时,我从数据库中读取位置到节点中,然后启动力布局。

这会导致布局稍微移动。

有没有我的方式来显示存储的节点位置的图形没有调用force.start()呢?

我想要的是一个“只读”模式,以显示其他人早些时候创建的稳定图形。

/Hans

回答

10

我建议您阅读documentation of the force layout。这真的很好。

如上所述,您必须为每个节点设置pxpy属性。然后,您可以在每个节点中将属性fixed设置为true

这意味着计算force.start()不会有任何影响。


你可以尝试的另一件事是Alpha值设置为0,然后开始仿真:

force.alpha(0) 
    .start() 

我不知道这种方法是否有效。如果没有,发布一个jsFiddle。

+1

哦,我已经反复阅读了文档,但我只是不够聪明,不知道我应该使用fixed属性:-)。 它很好用! 谢谢! – hansbrattberg

+0

这是正常的,不用担心。我很高兴它有帮助。如果解决了您的问题,您可以接受答案。 –