我正在使用 Linkurious 的插件,它似乎通过相当难以想象地分配x和ysigma.parsers.cypher.js
坐标随机值来将节点布置在视口上,这些随机值具有足够的节点基本上会造成不可读的混乱 - Neo 服务器中内置的图形生成确实一份更好的工作。
在考虑它时,一个更好地布置东西的算法可以像这样工作:
- 选择图中的第一个节点并将其定位在 (0,0)
- 选择所有直接相关的节点并将它们放置在距父节点{最小距离}的位置
- 如果任何两个兄弟姐妹的距离小于{最小距离},则增加与父母的距离,直到兄弟姐妹可以充分分开
- 为每个兄弟姐妹执行上面的步骤 2 和 3
但我想知道有什么我可以利用的东西,所以我不必从头开始编写功能吗?
*更新我*
也许2)选择所有(无子)直接相关的节点......然后2a)有子节点的子节点应定位在距离的两倍+兄弟节点的直径(这为其子节点提供空间)
* 更新二 *
如果圆的半径为 {minimum distance} 并且无子节点的数量超出了我们的范围,我们可以:1)增加半径直到所有节点都适合,或者 2)创建第二层