树布局

用脑图、缩进树和鱼骨图展示父子关系

选择布局

树的父子关系用边表示。source 填父节点,target 填子节点。使用一棵连通、无环且只有一个根的树。

想呈现什么布局与常用参数
脑图分支mindmap,层级间距用 levelGap,同侧节点间距用 nodeGap
文件目录indented,缩进量用 indent,行距用 rowHeight
根、分类、条目三层结构fishbone,主干上的分类间距用 categoryGap

配置与示例

用 Tree layout 切换三种布局。示例同时调整边的画法,缩进树用折线连接,鱼骨图用斜线展示条目。

这三种树布局都需要先注册。 可选布局

正在加载示例…
同一棵三层树切换 mindmap、indented、fishbone;重置恢复 mindmap
const layouts = {
  mindmap: {
    layout: {
      type: 'mindmap',
      direction: 'H',
      levelGap: 100,
      nodeGap: 24,
      getWidth: () => nodeSize,
      getHeight: (node: GraphNode) => node.id.length === 1 ? 64 : nodeSize,
      getSide: (node: GraphNode) => leftBranches.has(node.id[0]) ? 'left' : 'right',
    },
    edge: { type: 'line', style: { endArrow: false } },
  },
  indented: {
    layout: { type: 'indented', direction: 'LR', indent: 72, rowHeight: 30 },
    edge: { type: 'polyline', style: { router: 'indented', endArrow: false } },
  },
  fishbone: {
    layout: {
      type: 'fishbone',
      direction: 'LR',
      categoryGap: 156,
      categoryDistance: 130,
      itemHStep: 54,
      getWidth: () => nodeSize,
    },
    edge: { type: 'polyline', style: { router: 'fishbone', endArrow: false } },
  },
} satisfies Record<string, { layout: LayoutConfig; edge: EdgeConfig }>;

默认值和字段说明见树布局参考。