我使用 d3 force layout 构建了一个图形,然后将节点的位置存储在数据库中。
下次我想显示图表时,我将数据库中的位置读入节点,然后开始力布局。
这会导致布局略微移动。
有没有办法在根本不调用 force.start() 的情况下显示带有存储节点位置的图形?
我想要的是一个“只读”模式来显示一个由其他人早些时候创建的稳定图表。
/汉斯
我使用 d3 force layout 构建了一个图形,然后将节点的位置存储在数据库中。
下次我想显示图表时,我将数据库中的位置读入节点,然后开始力布局。
这会导致布局略微移动。
有没有办法在根本不调用 force.start() 的情况下显示带有存储节点位置的图形?
我想要的是一个“只读”模式来显示一个由其他人早些时候创建的稳定图表。
/汉斯
我建议您阅读force layout 的文档。这真的很好。
正如您所提到的,您必须为每个节点设置px
和py
属性。然后,您可以将属性设置fixed
为true
在每个节点中。
这意味着计算 force.start() 不会有任何影响。
您可以尝试的另一件事是将 alpha 值设置为 0,然后开始模拟:
force.alpha(0)
.start()
我不确定这种方法是否有效。如果没有,请发布 jsFiddle。