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