JavaScript is required

布局器基础概念

布局器(layout engine)的核心职责是为节点分配坐标(xy),让图结构更易读。

1. 布局本质在做什么

运行时布局主要包括:

  • 根据关系计算节点位置
  • 控制层级、方向、间距与可读性
  • 在坐标确定后配合居中/缩放完成视图落点

2. 两种主要使用方式

A. 通过 RGOptions.layout 声明默认布局

可与以下流程配合:

  • graphInstance.setJsonData(...)
  • graphInstance.doLayout()
  • initialData 初始化流程
const graphOptions = {
  layout: {
    layoutName: 'tree',
    from: 'left',
    treeNodeGapH: 150,
    treeNodeGapV: 10
  }
};

B. 通过 createLayout(...) 显式创建布局器

适合对指定子图做定向布局:

const layouter = graphInstance.createLayout({
  layoutName: 'tree',
  from: 'left',
  treeNodeGapH: 150,
  treeNodeGapV: 10
});
layouter.placeNodes(networkNodes, rootNode);

3. 常见手动布局流程

graphInstance.addNodes(nodes);
graphInstance.addLines(lines);

setTimeout(() => {
  const layouter = graphInstance.createLayout({ layoutName: 'tree', from: 'left' });
  const root = graphInstance.getNodeById('root');
  const networkNodes = graphInstance.getNetworkNodesByNode(root);
  layouter.placeNodes(networkNodes, root);
  graphInstance.moveToCenter();
  graphInstance.zoomToFit();
}, 300);

这个延时通常用于等待节点真实尺寸测量完成。

4. 核心布局 API

  • createLayout(layoutOptions)
  • doLayout()
  • setJsonData(jsonData)
  • startAutoLayout() / stopAutoLayout()(力导向自动布局场景)
  • moveToCenter()
  • zoomToFit()

5. 如何选策略

  • 初次整图快速展示:setJsonData + RGOptions.layout
  • 动态编辑器精细控制:add/update + createLayout
  • 手动坐标模式/绘图板:layoutName: 'fixed' 或禁用自动重排

6. 关键注意事项

  • 布局本质上是分配节点坐标,线条会跟随节点几何关系更新。
  • 手动 x/y 与自动布局不应在同一阶段互相覆盖。
  • 大图场景要关注布局算法与迭代参数的性能成本。

7. 下一步阅读