内置布局算法说明
relation-graph 通过 RGLayoutOptions.layoutName 提供多种内置布局算法。
1. 常用内置布局名称
常见布局包括:
treeforcecentersmart-treeio-treefixed
在部分版本类型定义中还可见其他名称(如 circle、folder)。
2. 树布局(tree)
适合层级结构、组织树、依赖树。
常用参数:
fromtreeNodeGapH、treeNodeGapVlevelGapslayoutExpansionDirectionsimpleTreeignoreNodeSizealignItemsX、alignItemsYalignParentItemsX、alignParentItemsY
3. 力导向布局(force)
适合复杂关系网络。
常用参数:
fastStartmaxLayoutTimesbyNode、byLineforce_node_repulsionforce_line_elastic
可用于持续自动调整的布局交互场景。
4. 中心布局(center)
适合围绕中心节点进行环形或分层扩散展示。
常用参数:
distanceCoefficientlevelGaps
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