使用指南元素 Element边 Edge

边总览

了解边的方向、内置类型、数据结构与配置方法

什么是边

边(Edge)连接两个节点,表示服务调用、流程依赖等关系。source 是起点节点 ID,target 是终点节点 ID。endArrow 控制终点箭头,startArrow 控制起点箭头。

同一对节点可以有多条边,例如用两条边区分读取和写入。source 与 target 相同时,边会绘制成自环。

边类型

内置类型用途主要配置
line默认类型,直接连接两个节点线宽、颜色和箭头
arc用弧线区分关系或调整弯曲方向curvature
cubic连接左右层级,用三次贝塞尔曲线过渡curveOffset
polyline流程图、组织架构和目录树的折线连接router、radius

路径参数和平行边配置见边通用配置项。

数据结构

在 data.edges 中提供边列表。每项都是一个 GraphEdge。

字段类型必填说明
sourcestring是起点 ID,引用 data.nodes 中的节点
targetstring是终点 ID,引用 data.nodes 中的节点
idstring否边的唯一 ID,省略时自动生成。需要更新、选中或区分同端点的多条边时可显式指定
dataEdgeData否自定义业务数据,例如协议、延迟或权重
statesEdgeState[]否初始状态,例如 ['selected']

配置方法

在 new Graph() 中用 edge 设置全图边类型与样式。把每条边的业务字段写在 data.edges 中,再用 edge.style 中的样式函数读取。下例用协议生成标签,用延迟决定线宽。

import { Graph } from '@antv/g6-lite';

const graph = new Graph({
  container: '#container',
  data: {
    nodes: [{ id: 'api', x: 80, y: 100 }, { id: 'db', x: 260, y: 100 }],
    edges: [{ id: 'api-db', source: 'api', target: 'db', data: { protocol: 'SQL', latency: 120 } }],
  },
  edge: {
    type: 'line',
    style: {
      endArrow: true,
      label: (_source, _target, edge) => String(edge.data?.protocol ?? ''),
      lineWidth: (_source, _target, edge) => Number(edge.data?.latency ?? 0) >= 100 ? 4 : 2,
    },
  },
});

await graph.render();

图绘制后,可用 graph.updateEdgeData('api-db', { latency: 60 }) 更新这条边的数据,或用 graph.updateOptions({ edge: { style: { stroke: '#1783FF' } } }) 修改全图边的颜色。见动态更新边。

自定义边

用 EdgeExtension 将内置路径和业务样式封装为一个可复用的类型,例如按权重调整弧线的颜色和线宽。见自定义边。