【发布时间】:2015-09-24 05:17:14
【问题描述】:
每当您刷新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。还尝试使用对象数组的索引号。没有运气。感谢您的任何想法。
【问题讨论】:
-
没有。强制布局实现在设计上是不确定的。
-
AFAIK 可以通过非常简单的静态力布局bl.ocks.org/mbostock/1667139
-
@Lars Kotthoff 感谢 Lars。基于此,我切换到径向样式的常规树布局。那就是把事情整理好。希望我能找到一种方法来添加拖动功能来重新定位节点,但这是另一个问题。
-
@kwoxer 如果您刷新该示例的页面,您将获得不同的布局。您可以修改实现以使其具有确定性,但这可能并非易事。
-
啊,当然,Lars,我在想这里的顺序很重要。但是,如果他想始终以相同的方式查看它,则确实切换到另一个布局。谢谢你的意见。
标签: javascript d3.js force-layout