每当您刷新this example时,节点的顺序都不同。 你怎么能这样做,以便每次刷新时顺序相同?也许"子节点1"在顶部,然后与右边相邻的是"子节点2"等,一直到处。除此之外,这个例子适用于我需要实现的目标。
以下解决方案似乎需要将节点固定为x,y点。但这样做似乎消除了拖动功能(节点需要能够拖到不同的位置来改变顺序)。另外,我并不总是知道最初会有多少个节点。
https://groups.google.com/forum/#!topic/d3-js/NsHlubbv3pc
Calm down initial tick of a force layout
Configure fixed-layout static graph in d3.js
虽然需要拖动,但动画却不是。我试过看看停止动画是否有任何影响,但它没有。
var n = 50;
for (var i = 0; i < n; ++i) force.tick();
force.stop();
另外,尝试在数据中添加一个新属性,为每个孩子提供一个排序来以某种方式进行操作。并尝试分配排名和排序的ID。还尝试使用对象数组的索引号。没运气。谢谢你的任何想法。
答案 0 :(得分:0)
Per Lars的评论,似乎在强制布局中这是不可能的。切换到树形布局。 JSFIDDLE仍然需要添加拖拽片。如果我能做到这一点,将会更新。
Links to jsfiddle.net must be accompanied by code.
答案 1 :(得分:0)
每次d3都不相同的原因是使用一个随机数来防止节点卡在奇数个位置。在我的有限理解中,随机数的作用是“抖动”图形,以帮助其解开纠缠。
一种使其可预测的简单解决方案是用seedrandom提供的可预测的随机数生成器替换随机数生成器。
如果在运行模拟之前使用相同的种子为随机数生成器提供种子,则每次的结果将相同。
请注意,仅对图形进行很小的更改将导致图形具有完全不同的布局。 (我总是想到蝴蝶混沌效应来解释原因)。