Dagre 布局
上一篇
D3Force3D 3D 力导向布局
下一篇
Dendrogram 生态树
Loading...
Dagre 是一种层次化布局,适用于有向无环图(DAG)的布局场景,能够自动处理节点之间的方向和间距,支持水平和垂直布局。参考更多 Dagre 布局样例或源码以及官方文档。
const graph = new Graph({layout: {type: 'dagre',rankdir: 'TB',align: 'UL',nodesep: 50,ranksep: 50,controlPoints: false,},});
更多配置项可参考官方文档
属性 | 描述 | 类型 | 默认值 | 必选 |
---|---|---|---|---|
type | 布局类型 | dagre | - | ✓ |
rankdir | 布局方向,可选值 | TB | BT | LR | RL | TB | |
align | 节点对齐方式,可选值 | UL | UR | DL | DR | UL | |
nodesep | 节点间距(px)。在rankdir 为 TB 或 BT 时是节点的水平间距;在rankdir 为 LR 或 RL 时代表节点的竖直方向间距 | number | 50 | |
ranksep | 层间距(px)。在rankdir 为 TB 或 BT 时是竖直方向相邻层间距;在rankdir 为 LR 或 RL 时代表水平方向相邻层间距 | number | 100 | |
ranker | 为每个节点分配等级的算法,共支持三种算法,分别是:longest-path 最长路径算法、tight-tree 紧凑树算法、network-simplex 网络单形法 | network-simplex | tight-tree | longest-path | network-simplex | |
nodeSize | G6自定义属性,统一指定或为每个节点指定节点大小。如果仅返回单个number,则表示节点的宽度和高度相同;如果返回一个数组,则形如:[width, height] | number | number[] | () => (number | number[]) | ||
controlPoints | 是否保留边的控制点 | boolean | false |
TB
|BT
|LR
|RL
, Default:TB
布局方向
TB
:从上到下;BT
:从下到上;LR
:从左到右;RL
:从右到左。
UL
|UR
|DL
|DR
, Default:UL
节点对齐方式
UL
:左上对齐UR
:右上对齐DL
:左下对齐DR
:右下对齐number, Default: 50
节点间距(px)。在rankdir 为 TB
或 BT
时是节点的水平间距;在rankdir 为 LR
或 RL
时代表节点的竖直方向间距
number, Default: 50
层间距(px)。在rankdir 为 TB
或 BT
时是竖直方向相邻层间距;在rankdir 为 LR
或 RL
时代表水平方向相邻层间距
network-simplex
|tight-tree
|longest-path
, Default:network-simplex
为每个节点分配层级的算法,共支持三种算法,分别是:
longest-path
: 最长路径算法,使用DFS深度优先搜索,递归查找每个节点的最长路径。优点是计算简单速度快,但会导致长边过多;tight-tree
: 紧凑树算法,一种优化算法,目的是减少长边的数量。先用最长路径算法longest-path
计算出初始层级,然后调整松弛边的长度,从而构建可行树。network-simplex
: 网络单形法,参考算法A Technique for Drawing Directed Graphs,核心思想是迭代修改节点的层级,缩小松弛边。number | number[] | () => (number | number[])
G6自定义属性,统一指定或为每个节点指定节点大小。如果仅返回单个number,则表示节点的宽度和高度相同;如果返回一个数组,则形如:[width, height]
(d) => {// d 是一个节点if (d.id === 'testId') return 20;return [10, 20];};
boolean, Default: false
是否保留边的控制点。
以下文档可以帮助你更好地理解Dagre 布局