ComboCombined 复合布局
上一篇
Circular 环形布局
下一篇
CompactBox 紧凑树
Loading...
ComboCombined 复合布局适用于复合分组结构的图数据展示场景,支持灵活配置 Combo 内部元素的布局以及最外层 Combo 和节点之间的布局。 默认情况内部元素采用 Concentric 同心圆布局,外部布局采用 gForce 力导向布局,兼顾布局效果与整体稳定性。参考更多 ComboCombined 复合布局样例和源码
属性 | 描述 | 类型 | 默认值 | 必选 |
---|---|---|---|---|
type | 布局类型 | combo-combined | - | ✓ |
center | 布局中心 | PointTuple | 图中心 | |
comboPadding | Combo 内部的 padding 值,不用于渲染,仅用于计算力。推荐设置为与视图上 Combo 内部 padding 值相同的值 | ((d?: unknown) => number) | number | number[] | undefined | 10 | |
innerLayout | Combo 内部的布局算法, 说明 | Layout | ConcentricLayout | |
nodeSize | 节点大小(直径)。用于碰撞检测。若不指定,则根据传入的节点的 size 属性计算。若即不指定,节点中也没有 size,则默认大小为 10 | number | number[] | (d?: NodeData) => number | 10 | |
outerLayout | 最外层的布局算法, 说明 | Layout | ForceLayout | |
spacing | preventNodeOverlap 或 preventOverlap 为 true 时生效, 防止重叠时节点 / Combo 边缘间距的最小值。可以是回调函数, 为不同节点设置不同的最小间距 | number | (d?: NodeData) => number | - | |
treeKey | treeKey | string | - |
Layout<any>
Default:ConcentricLayout
Combo 内部的布局算法,需要使用同步的布局算法,默认为 ConcentricLayout,更多布局算法
示例:
import { ConcentricLayout } from '@antv/layout';new Graph({layout: {type: 'combo-combined',/*** 查看更多 ConcentricLayout 配置参数:* https://github.com/antvis/layout/blob/v5/packages/layout/src/types.ts#L397*/innerLayout: new ConcentricLayout({sortBy: 'id',nodeSize: 20,clockwise: true,}),},});
Layout<any>
Default:ForceLayout
最外层的布局算法,默认为 ForceLayout,更多布局算法
示例
import { ForceLayout } from '@antv/layout';new Graph({layout: {type: 'combo-combined',/*** 查看更多 ForceLayout 配置参数:* https://github.com/antvis/layout/blob/v5/packages/layout/src/types.ts#L950*/outerLayout: new ForceLayout({gravity: 1,factor: 2,linkDistance: (edge: any, source: any, target: any) => {const nodeSize = ((source.size?.[0] || 30) + (target.size?.[0] || 30)) / 2;return Math.min(nodeSize * 1.5, 70);},}),},});