Concentric

Concentric 布局为同心圆布局,用户可以指定节点某个属性为排序依据(默认为节点度数 degree),该属性值越高,则该节点布局后的位置中心。Concentric - 图1

属性

center

类型: Array示例:[ 0, 0 ]默认值:图的中心是否必须:false说明:布局的中心

preventOverlap

类型:Boolean默认值:false是否必须:false说明:是否防止重叠,必须配合下面属性 nodeSize ,只有设置了与当前图节点大小相同的 nodeSize 值,才能够进行节点重叠的碰撞检测

nodeSize

类型: Number默认值:30是否必须:false说明:节点大小(直径)。用于防止节点重叠时的碰撞检测

minNodeSpacing

类型: Number默认值:10是否必须:false说明:环与环之间最小间距,用于调整半径

sweep

类型: Number默认值:undefined是否必须:false说明:第一个节点与最后一个节点之间的弧度差。若为 undefined ,则将会被设置为 2 Math.PI (1 - 1 / |level.nodes|) ,其中 level.nodes 为该算法计算出的每一层的节点,|level.nodes| 代表该层节点数量

equidistant

类型: Boolean默认值:false是否必须:false说明:环与环之间的距离是否相等

startAngle

类型: Number默认值:3 / 2 Math.PI是否必须:false*说明:开始方式节点的弧度

clockwise

类型: Boolean默认值:false是否必须:false说明:是否按照顺时针排列

maxLevelDiff

类型: Number默认值:undefined是否必须:false说明:每一层同心值的求和。若为 undefined,则将会被设置为 maxValue / 4 ,其中 maxValue 为最大的排序依据的属性值。例如,若 sortBy='degree',则 maxValue 为所有节点中度数最大的节点的度数

sortBy

类型: String默认值:undefined是否必须:false说明:指定排序的依据(节点属性名),数值越高则该节点被放置得越中心。若为 undefined,则会计算节点的度数,度数越高,节点将被放置得越中心

方法

与父类 Layout 的方法相同。使用该布局时不需要关心内部方法的调用,由 G6 控制。

使用方法

实例化图时配置到 layout 中,如果没有配置 layout 默认使用 Random 布局。

  1. const graph = new G6.Graph({
  2. container: 'mountNode',
  3. width: 1000,
  4. height: 600,
  5. layout: {
  6. type: 'concentric',
  7. center: [ 200, 200 ], // 可选,
  8. linkDistance: 50, // 可选,边长
  9. preventOverlap: true, // 可选,必须配合 nodeSize
  10. nodeSize: 30, // 可选
  11. sweep: 10, // 可选
  12. equidistant: false, // 可选
  13. startAngle: 0, // 可选
  14. clockwise: false, // 可选
  15. maxLevelDiff: 10, // 可选
  16. sortBy: 'degree' // 可选
  17. }
  18. );