JavaScript is required

内置布局算法说明

relation-graph 通过 RGLayoutOptions.layoutName 提供多种内置布局算法。

1. 常用内置布局名称

常见布局包括:

  • tree
  • force
  • center
  • smart-tree
  • io-tree
  • fixed

在部分版本类型定义中还可见其他名称(如 circlefolder)。

2. 树布局(tree

适合层级结构、组织树、依赖树。

常用参数:

  • from
  • treeNodeGapHtreeNodeGapV
  • levelGaps
  • layoutExpansionDirection
  • simpleTree
  • ignoreNodeSize
  • alignItemsXalignItemsY
  • alignParentItemsXalignParentItemsY

3. 力导向布局(force

适合复杂关系网络。

常用参数:

  • fastStart
  • maxLayoutTimes
  • byNodebyLine
  • force_node_repulsion
  • force_line_elastic

可用于持续自动调整的布局交互场景。

4. 中心布局(center

适合围绕中心节点进行环形或分层扩散展示。

常用参数:

  • distanceCoefficient
  • levelGaps

5. 智能双向树(smart-tree

强调有向关系的可读性,适合方向性较强的数据。

参数与树布局相近,重点是方向表达更清晰。

6. 输入输出树(io-tree

将入度和出度关系分开展示,适合流程/数据流分析。

常用参数与 smart-tree/tree 类似。

7. 固定布局(fixed

直接使用节点 x/y 坐标,不进行自动排布。

适合:

  • 编辑器场景
  • 保存并恢复手工布局
  • 外部算法已计算坐标的场景

8. 使用示例

const graphOptions = {
  layout: {
    layoutName: 'tree',
    from: 'left',
    treeNodeGapH: 150,
    treeNodeGapV: 10
  }
};

或显式创建布局器:

const layouter = graphInstance.createLayout({
  layoutName: 'force',
  maxLayoutTimes: 500,
  force_node_repulsion: 1.2
});
layouter.placeNodes(nodes, rootNode);

9. 选型建议

  • 严格层级:tree
  • 有向关系更清晰:smart-tree / io-tree
  • 稠密关系网络:force
  • 中心辐射关系:center
  • 手工/外部坐标:fixed

10. 下一步阅读