logo

G6

  • 文档
  • API
  • 图表示例
  • 社区
  • 所有产品antv logo arrow
  • 5.0.47
  • 简介
  • 开始使用
    • 快速开始
    • 安装
    • 前端框架集成
      • 在 React 中使用
      • 在 Vue 中使用
      • 在 Angular 中使用
    • 详细教程
  • 图 Graph
    • Graph - 图
    • Options 配置项
    • 内置扩展
    • Extension - 扩展
  • 数据 Data
  • 元素 Element
    • 元素总览
    • 元素状态
    • 节点 Node
      • 节点总览
      • 内置节点
        • 节点通用配置项
        • Diamond 菱形
        • Donut 甜甜圈
        • Ellipse 椭圆形
        • Hexagon 六边形
        • Html HTML
        • Image 图片
        • Rect 矩形
        • Star 五角形
        • Triangle 三角形
        • Circle 圆形
      • 自定义节点
      • 使用 React 定义节点
    • 边 Edge
      • 边总览
      • 内置边
        • 边通用配置项
        • Cubic 三次贝塞尔曲线
        • CubicHorizontal 水平三次贝塞尔曲线
        • CubicVertical 垂直三次贝塞尔曲线
        • Line 直线
        • Polyline 折线
        • Quadratic 二次贝塞尔曲线
      • 自定义边
    • 组合 Combo
      • 组合总览
      • 内置组合
        • 组合配置项
        • Circle 圆形
        • Rect 矩形
      • 自定义 Combo
    • 图形 Shape
      • 图形 Shape 与 KeyShape
      • 原子 Shape 以及其属性
      • 复合 Shape 的设计与实现
  • 布局 Layout
    • 布局总览
    • 内置布局
      • 布局通用配置项
      • AntvDagre 布局
      • Circular 环形布局
      • ComboCombined 复合布局
      • CompactBox 紧凑树
      • Concentric 同心圆布局
      • D3Force 力导向布局
      • D3Force3D 3D 力导向布局
      • Dagre 布局
      • Dendrogram 生态树
      • Fishbone 鱼骨布局
      • Force 力导向布局
      • ForceAtlas2 力导向布局
      • Fruchterman 力导向布局
      • Grid 网格布局
      • Indented 缩进树
      • MDS 高维数据降维布局
      • Mindmap 脑图树
      • Radial 径向布局
      • Random 随机布局
      • Snake 蛇形布局
    • 自定义布局
  • 交互 Behavior
    • 交互总览
    • 内置交互
      • AutoAdaptLabel 标签自适应显示
      • BrushSelect 框选
      • ClickSelect 点击选中
      • CollapseExpand 展开/收起元素
      • CreateEdge 创建边
      • DragCanvas 拖拽画布
      • DragElement 拖拽元素
      • DragElementForce 力导向拖拽元素
      • FixElementSize 缩放画布时固定元素大小
      • FocusElement 聚焦元素
      • HoverActivate 悬停激活
      • LassoSelect 套索选择
      • OptimizeViewportTransform 优化视口变换
      • ScrollCanvas 滚动画布
      • ZoomCanvas 缩放画布
    • 自定义交互
  • 插件 Plugin
    • 插件总览
    • 内置插件
      • Background 背景
      • BubbleSets 气泡集
      • Contextmenu 上下文菜单
      • EdgeBundling 边绑定
      • EdgeFilterLens 边过滤镜
      • Fisheye 鱼眼放大镜
      • Fullscreen 全屏展示
      • GridLine 网格线
      • History 历史记录
      • Hull 轮廓包围
      • Legend 图例
      • Minimap 小地图
      • Snapline 对齐线
      • Timebar 时间条
      • Toolbar 工具栏
      • Tooltip 提示框
      • Watermark 水印
    • 自定义插件
  • 数据处理 Transform
    • 数据处理总览
    • 内置数据处理
      • MapNodeSize 动态调整节点大小
      • PlaceRadialLabels 径向标签
      • ProcessParallelEdges 平行边
    • 自定义数据处理
  • 主题 Theme
    • 主题总览
    • 自定义主题
    • 色板
    • 自定义色板
  • 动画 Animation
    • 动画总览
    • 自定义动画
  • 扩展阅读
    • 事件
    • 渲染器
    • 坐标系
    • 下载图片
    • 使用 iconfont
    • 使用 3D
    • 项目打包
  • 版本特性
    • 新版本特性
    • 升级到 5.0
  • 常见问题
  • 参与贡献

边通用配置项

上一篇
边总览
下一篇
Cubic 三次贝塞尔曲线

Resources

Ant Design
Galacea Effects
Umi-React 应用开发框架
Dumi-组件/文档研发工具
ahooks-React Hooks 库

社区

体验科技专栏
seeconfSEE Conf-蚂蚁体验科技大会

帮助

GitHub
StackOverflow

more products更多产品

Ant DesignAnt Design-企业级 UI 设计语言
yuque语雀-知识创作与分享工具
EggEgg-企业级 Node 开发框架
kitchenKitchen-Sketch 工具集
GalaceanGalacean-互动图形解决方案
xtech蚂蚁体验科技
© Copyright 2025 Ant Group Co., Ltd..备案号:京ICP备15032932号-38

Loading...

本文介绍边属性配置,配置位置如下:

import { Graph } from '@antv/g6';
const graph = new Graph({
edge: {
type: 'line', // 边类型配置
style: {}, // 边样式配置
state: {}, // 边状态样式
palette: {}, // 边色板配置
animation: {}, // 边动画配置
},
});

EdgeOptions

属性描述类型默认值必选
type边类型,内置边类型名称或自定义边的名称Typeline
style边样式,包括颜色、大小等Style-
state定义边在不同状态下的样式State-
palette定义边的色板,用于根据不同数据映射颜色Palette-
animation定义边的动画效果Animation-

Type

指定边类型,内置边类型名称或自定义边的名称。默认为 line(直线边)。

const graph = new Graph({
edge: {
type: 'polyline', // 边类型配置
},
});

可选值有:

  • cubic-horizontal:水平三次贝塞尔曲线
  • cubic-vertical:垂直三次贝塞尔曲线
  • cubic:三次贝塞尔曲线
  • line:直线
  • polyline:折线
  • quadratic:二次贝塞尔曲线

Style

定义边的样式,包括颜色、大小等。

const graph = new Graph({
edge: {
style: {},
},
});

一个完整的边由以下几部分构成:

了解边的构成,请阅读 元素 - 边。

以下样式配置将按原子图形依次说明:

主图形样式 key

属性描述默认值类型
class边的classNamestring-
cursor边的鼠标移入样式,配置项stringdefault
fill边的区域填充色string-
fillRule边的内部填充规则nonzero | evenodd-
filter边的阴影的滤镜效果string-
increasedLineWidthForHitTesting边的宽度过小时,可以用来增大交互区域string | number-
isBillboard3D 场景中生效,始终朝向屏幕,因此线宽不受透视投影影像trueboolean
lineDash边虚线样式0number
lineDashOffset边虚线偏移量number0
lineWidth边的宽度1number
opacity边整体的透明度number1
pointerEvents边是否响应指针事件,配置项string-
shadowBlur边的阴影模糊效果number-
shadowColor边的阴影颜色string-
shadowOffsetX边的阴影X轴偏移number-
shadowOffsetY边的阴影Y轴偏移number-
shadowType边的阴影类型inner | outer | both-
sourcePort边起始连接的连接桩-string
stroke边的颜色#000string
strokeOpacity边的颜色透明度number1
targetPort边终点连接的连接桩-string
transformtransform 属性允许你旋转、缩放、倾斜或平移给定边string-
transformOrigin旋转与缩放中心,也称作变换中心string-
visibility边是否可见visible | hiddenvisible
zIndex边的渲染层级number1

PointerEvents

可选值有: visible | visiblepainted | visiblestroke | non-transparent-pixel | visiblefill | visible | painted | fill | stroke | all | none | auto | inherit | initial | unset

Cursor

可选值有:auto | default | none | context-menu | help | pointer | progress | wait | cell | crosshair | text | vertical-text | alias | copy | move | no-drop | not-allowed | grab | grabbing | all-scroll | col-resize | row-resize | n-resize | e-resize | s-resize | w-resize | ne-resize | nw-resize | se-resize | sw-resize | ew-resize | ns-resize | nesw-resize | nwse-resize | zoom-in | zoom-out

示例:

const graph = new Graph({
edge: {
style: {
stroke: '#1783F', // 边颜色
lineWidth: 2, // 边的宽度
},
},
});

效果如下:

createGraph(
{
data: {
nodes: [
{ id: 'node1', style: { x: 60, y: 40 } },
{ id: 'node2', style: { x: 180, y: 40 } },
],
edges: [{ source: 'node1', target: 'node2' }],
},
node: {
style: { fill: '#1783FF' },
},
edge: {
style: {
stroke: '#FF0000', // 边颜色
lineWidth: 2, // 边的宽度
},
},
},
{ width: 240, height: 100 },
);

标签样式 label

属性描述类型默认值
label边标签是否显示booleantrue
labelAutoRotate边标签是否自动旋转,保持与边的方向一致booleantrue
labelBackground边标签是否显示背景booleanfalse
labelBackgroundClass边标签背景classNamestring-
labelBackgroundCursor边标签背景鼠标移入样式,配置项stringdefault
labelBackgroundFill边标签背景填充色string-
labelBackgroundFillOpacity边标签背景透明度number1
labelBackgroundHeight边标签背景高度string | number-
labelBackgroundLineDash边标签背景虚线配置number | string |(number | string )[]-
labelBackgroundLineDashOffset边标签背景虚线偏移量number-
labelBackgroundLineWidth边标签背景描边线度number-
labelBackgroundRadius边标签背景圆角半径
- number: 统一设置四个圆角半径
- number[]: 分别设置四个圆角半径,不足则自动补充
number | number[]0
labelBackgroundShadowBlur边标签背景阴影模糊程度number-
labelBackgroundShadowColor边标签背景阴影颜色string-
labelBackgroundShadowOffsetX边标签背景阴影 X 方向偏移number-
labelBackgroundShadowOffsetY边标签背景阴影 Y 方向偏移number-
labelBackgroundStroke边标签背景描边颜色string-
labelBackgroundStrokeOpacity边标签背景描边透明度number | string1
labelBackgroundVisibility边标签背景是否可见visible | hidden-
labelBackgroundZIndex边标签背景渲染层级number-
labelClass边标签classNamestring-
labelCursor边标签鼠标移入样式,配置项stringdefault
labelFill边标签文字颜色string-
labelFillOpacity边标签文字颜色透明度string1
labelFillRule边标签文字填充规则nonzero | evenodd-
labelFilter边标签文字滤镜string-
labelFontFamily边标签文字字体族system-ui, sans-serif-
labelFontSize边标签字体大小number12
labelFontStyle边标签文字字体样式normal | italic | oblique-
labelFontVariant边标签文字字体变种normal | small-caps-
labelFontWeight边标签字体粗细number | stringnormal
labelLeading边标签文字行间距number-
labelLetterSpacing边标签文字字间距number-
labelMaxLines边标签文字最大行数number1
labelMaxWidth边标签最大宽度。开启自动折行后,超出该宽度则换行
- string: 表示以相对于边宽度的百分比形式定义最大宽度。例如 50% 表示标签宽度不超过边宽度的一半
- number: 表示以像素值为单位定义最大宽度。例如 100 表示标签的最大宽度为 100 像素
number | string80%
labelOffsetX标签在 x 轴方向上的偏移量number4
labelOffsetY边标签在 y 轴方向上的偏移量number0
labelOpacity边标签整体透明度number1
labelPadding边标签内边距number | number[]0
labelPlacement边标签相对于边的位置。取值范围为 start、center、end 或特定比率(数字 0-1)start | center | end | numbercenter
labelText边标签文字内容string-
labelTextAlign边标签文字对齐方式start | center | middle | end | left | `right'left
labelTextBaseLine边标签文字基线top | hanging | middle | alphabetic | ideographicmiddle
labelTextDecorationColor边标签文字装饰线颜色string-
labelTextDecorationLine边标签文字装饰线string-
labelTextDecorationStyle边标签文字装饰线样式solid | double | dotted | dashed | wavy-
labelTextOverflow边标签文字溢出处理方式clip | ellipsis | stringellipsis
labelVisibility边标签是否可见visible | hiddenvisible
labelWordWrap边标签是否开启自动折行。开启 labelWordWrap 后,超出 labelMaxWidth 的部分自动换行booleanfalse
labelZIndex边标签渲染层级number-

示例:

const graph = new Graph({
edge: {
style: {
stroke: '#1783F', // 边颜色
lineWidth: 2, // 边的宽度
label: true, // 开启边标签展示
labelText: 'labelText', // 边标签文字
labelPlacement: 'center', // 边标签相对于边的位置
labelFill: '#FF0000', // 边标签文字颜色
labelOffsetY: 20, // 边标签在y轴方向上的偏移量
},
},
});

效果如下:

createGraph(
{
data: {
nodes: [
{ id: 'node1', style: { x: 60, y: 40 } },
{ id: 'node2', style: { x: 180, y: 40 } },
],
edges: [{ source: 'node1', target: 'node2' }],
},
node: {
style: { fill: '#1783FF' },
},
edge: {
style: {
stroke: '#FF0000', // 边颜色
lineWidth: 2, // 边的宽度
label: true, // 开启边标签展示
labelText: 'labelText', // 边标签文字
labelPlacement: 'center', // 边标签相对于边的位置
labelFill: '#FF0000', // 边标签文字颜色
labelOffsetY: 20, // 边标签在y轴方向上的偏移量
},
},
},
{ width: 240, height: 100 },
);

光晕样式 halo

属性描述类型默认值
halo边光晕是否显示booleanfalse
haloClass边光晕classNamestring-
haloCursor边光晕鼠标移入样式,配置项strigdefault
haloDraggable边光晕是否允许拖拽boolean-
haloDroppable边光晕是否允许接收被拖拽的元素booleanfalse
haloFillRule边光晕填充规则nonzero | evenodd-
haloFilter边光晕滤镜string-
haloLineDash边光晕描边虚线样式number | string | (number | string)[]0
haloLineWidth边光晕描边宽度number3
haloPointerEvents边光晕效果是否响应指针事件,配置项stringnone
haloStroke边光晕描边色string与主图形的填充色一致
haloStrokeOpacity边光晕描边色透明度number0.25
haloVisibility边光晕可见性visible | hiddenvisible
haloZIndex边光晕渲染层级number-1

示例:

const graph = new Graph({
edge: {
style: {
stroke: '#1783F', // 边颜色
lineWidth: 2, // 边的宽度
label: true, // 开启边标签展示
labelText: 'labelText', // 边标签文字
labelPlacement: 'center', // 边标签相对于边的位置
labelFill: '#FF0000', // 边标签文字颜色
labelOffsetY: 20, // 边标签在y轴方向上的偏移量
halo: true, // 边光晕开启
haloStroke: '#000', // 边光晕颜色
haloStrokeOpacity: 0.2, // 边光晕透明度
},
},
});

效果如下:

createGraph(
{
data: {
nodes: [
{ id: 'node1', style: { x: 60, y: 40 } },
{ id: 'node2', style: { x: 180, y: 40 } },
],
edges: [{ source: 'node1', target: 'node2' }],
},
node: {
style: { fill: '#1783FF' },
},
edge: {
style: {
stroke: '#FF0000', // 边颜色
lineWidth: 2, // 边的宽度
label: true, // 开启边标签展示
labelText: 'labelText', // 边标签文字
labelPlacement: 'center', // 边标签相对于边的位置
labelFill: '#FF0000', // 边标签文字颜色
labelOffsetY: 20, // 边标签在y轴方向上的偏移量
halo: true, // 边光晕开启
haloStroke: '#000', // 边光晕颜色
haloStrokeOpacity: 0.2, // 边光晕透明度
},
},
},
{ width: 240, height: 100 },
);

徽标样式 badge

属性描述类型默认值
badge边徽标是否显示booleantrue
badgeBackground边徽标是否显示背景booleantrue
badgeBackgroundClass边徽标背景clssNamestring-
badgeBackgroundCursor边徽标背景鼠标移入样式,配置项stringdefault
badgeBackgroundFill边徽标背景填充色。若不指定,优先考虑 badgePalette 按顺序分配string-
badgeBackgroundFillOpacity边徽标背景填充透明度number1
badgeBackgroundFilter边徽标背景滤镜string-
badgeBackgroundHeight边徽标背景高度number | string-
badgeBackgroundLineDash边徽标背景虚线配置number | string |(number | string )[]-
badgeBackgroundLineDashOffset边徽标背景虚线偏移量number-
badgeBackgroundLineWidth边徽标背景描边线宽number-
badgeBackgroundOpacity边徽标渲背景透明度number1
badgeBackgroundRadius边徽标背景圆角半径
- number: 统一设置四个圆角半径
- number[]: 分别设置四个圆角半径,会补足缺省的分量
- string: 与 CSS padding 属性类似,使用空格分隔
number | number[] | string50%
badgeBackgroundShadowBlur边徽标背景阴影模糊程度number-
badgeBackgroundShadowColor边徽标背景阴影颜色string-
badgeBackgroundShadowOffsetX边徽标背景阴影 X 方向偏移number-
badgeBackgroundShadowOffsetY边徽标背景阴影 Y 方向偏移number-
badgeBackgroundStroke边徽标背景描边颜色string-
badgeBackgroundStrokeOpacity边徽标背景描边透明度number | string1
badgeBackgroundVisibility边徽标背景是否可见visible | hiddenvisible
badgeBackgroundZIndex边徽标背景渲染层级number-
badgeFill边徽标文字颜色string-
badgeFontSize边徽标字体大小number10
badgeFontVariant边徽标字体变种normal | small-caps | stringnormal
badgeFontWeight边徽标字体粗细number | stringnormal
badgeLineHeight边徽标行高string | number-
badgeLineWidth边徽标行宽string | number-
badgeMaxLines边徽标文本最大行数number1
badgeOffsetX边徽标在 x 轴方向上的偏移量number0
badgeOffsetY边徽标在 y 轴方向上的偏移量number0
badgePadding边徽标内边距number | number[][2, 4, 2, 4]
badgePlacement边徽标相对于边主图形的位置prefix | suffixsuffix
badgeText边徽标文字内容string-
badgeTextAlign边徽标文本水平对齐方式start | center | middle | end | left | rightleft
badgeTextBaseline边徽标文本基线top | hanging | middle | alphabetic | ideographic | bottomalphabetic
badgeTextDecorationColor边徽标文本装饰线颜色string-
badgeTextDecorationLine边徽标文本装饰线string-
badgeTextDecorationStyle边徽标文本装饰线样式solid | double | dotted | dashed | wavysolid
badgeTextOverflow边徽标文本溢出处理方式clip | ellipsis | stringclip
badgeVisibility边徽标是否可见visible | hidden-
badgeWordWrap边徽标文本是否自动换行,开启后超过badgeWordWrapWidth即会换行boolean-
badgeWordWrapWidth边徽标文本换行宽度number-
badgeZIndex边徽标渲染层级number1

示例:

const graph = new Graph({
edge: {
style: {
stroke: '#1783F', // 边颜色
lineWidth: 2, // 边的宽度
label: true, // 开启边标签展示
labelText: 'labelText', // 边标签文字
labelPlacement: 'center', // 边标签相对于边的位置
labelFill: '#FF0000', // 边标签文字颜色
labelOffsetY: 20, // 边标签在y轴方向上的偏移量
halo: true, // 边光晕开启
haloStroke: '#000', // 边光晕颜色
haloStrokeOpacity: 0.2, // 边光晕透明度
badgeText: 'badge', // 边徽标文本
badgeFill: 'green', // 边徽标文本颜色
badgeOffsetX: -20, // 边徽标在x轴方向上的偏移量
badgeBackground: true, // 边徽标背景开启
},
},
});

效果如下:

createGraph(
{
data: {
nodes: [
{ id: 'node1', style: { x: 60, y: 40 } },
{ id: 'node2', style: { x: 180, y: 40 } },
],
edges: [{ source: 'node1', target: 'node2' }],
},
node: {
style: { fill: '#1783FF' },
},
edge: {
style: {
stroke: '#FF0000', // 边颜色
lineWidth: 2, // 边的宽度
label: true, // 开启边标签展示
labelText: 'labelText', // 边标签文字
labelPlacement: 'center', // 边标签相对于边的位置
labelFill: '#FF0000', // 边标签文字颜色
labelOffsetY: 20, // 边标签在y轴方向上的偏移量
halo: true, // 边光晕开启
haloStroke: '#000', // 边光晕颜色
haloStrokeOpacity: 0.2, // 边光晕透明度
badgeText: 'badge', // 边徽标文本
badgeFill: 'green', // 边徽标文本颜色
badgeOffsetX: -20, // 边徽标在x轴方向上的偏移量
badgeBackground: true, // 边徽标背景开启
},
},
},
{ width: 240, height: 100 },
);

起始箭头样式 startArrow

属性描述类型默认值
startArrow边起始箭头是否显示booleanfalse
startArrowClass边起始箭头classNamestring-
startArrowCursor边起始箭头鼠标移入样式,配置项stringdefault
startArrowFill边起始箭头填充颜色string默认与边的颜色一致
startArrowFillOpacity边起始箭头整体透明度number1
startArrowFillRule边起始箭头填充规则nonzero | evenodd-
startArrowFilter边起始箭头滤镜string-
startArrowIncreasedLineWidthForHitTesting边起始箭头大小较小时,可交互区域也随之变小,我们可以增大这个区域,让箭头更容易被拾取到number0
startArrowLineDash边起始箭头描边虚线配置number0
startArrowLineDashOffset边起始箭头描边虚线偏移量number0
startArrowLineJoin边起始箭头描边连接处样式round | bevel | miterround
startArrowOffset边起始箭头的偏移量number |0 |
startArrowOpacity边起始箭头透明度number1
startArrowShadowBlur边起始箭头阴影模糊程度number-
startArrowShadowColor边起始箭头阴影颜色string-
startArrowShadowOffsetX边起始箭头阴影X轴偏移量number0
startArrowShadowOffsetY边起始箭头阴影Y轴偏移量number0
startArrowSize边起始箭头大小number | [number, number]-
startArrowSrc边起始箭头图片地址(传入图片地址即可以图片代替箭头)string-
startArrowStroke边起始箭头描边颜色string默认与边的颜色一致
startArrowStrokeOpacity边起始箭头描边透明度number1
startArrowTransform边起始箭头的旋转、缩放、倾斜或平移配置string-
startArrowTransformOrigin边起始箭头旋转与缩放中心,也称作变换中心stringcenter
startArrowType边起始箭头类型triangle | circle | diamond | vee | rect | triangleRect | simple | ((width: number, height: number) => PathArray)vee
startArrowZIndex边起始箭头渲染层级number-

示例:

const graph = new Graph({
edge: {
style: {
stroke: '#1783F', // 边颜色
lineWidth: 2, // 边的宽度
label: true, // 开启边标签展示
labelText: 'labelText', // 边标签文字
labelPlacement: 'center', // 边标签相对于边的位置
labelFill: '#FF0000', // 边标签文字颜色
labelOffsetY: 20, // 边标签在y轴方向上的偏移量
halo: true, // 边光晕开启
haloStroke: '#000', // 边光晕颜色
haloStrokeOpacity: 0.2, // 边光晕透明度
badgeText: 'badge', // 边徽标文本
badgeFill: 'green', // 边徽标文本颜色
badgeOffsetX: -20, // 边徽标在x轴方向上的偏移量
badgeBackground: true, // 边徽标背景开启
startArrow: true, // 边起始箭头开启
startArrowFill: 'yellow', // 边起始箭头填充颜色
},
},
});

效果如下:

createGraph(
{
data: {
nodes: [
{ id: 'node1', style: { x: 60, y: 40 } },
{ id: 'node2', style: { x: 180, y: 40 } },
],
edges: [{ source: 'node1', target: 'node2' }],
},
node: {
style: { fill: '#1783FF' },
},
edge: {
style: {
stroke: '#FF0000', // 边颜色
lineWidth: 2, // 边的宽度
label: true, // 开启边标签展示
labelText: 'labelText', // 边标签文字
labelPlacement: 'center', // 边标签相对于边的位置
labelFill: '#FF0000', // 边标签文字颜色
labelOffsetY: 20, // 边标签在y轴方向上的偏移量
halo: true, // 边光晕开启
haloStroke: '#000', // 边光晕颜色
haloStrokeOpacity: 0.2, // 边光晕透明度
badgeText: 'badge', // 边徽标文本
badgeFill: 'green', // 边徽标文本颜色
badgeOffsetX: -20, // 边徽标在x轴方向上的偏移量
badgeBackground: true, // 边徽标背景开启
startArrow: true, // 边起始箭头开启
startArrowFill: 'yellow', // 边起始箭头填充颜色
},
},
},
{ width: 240, height: 100 },
);

终点箭头样式 endArrow

属性描述类型默认值
endArrow边终点箭头是否显示booleanfalse
endArrowClass边终点箭头classNamestring-
endArrowCursor边终点箭头鼠标移入样式,配置项stringdefault
endArrowFill边终点箭头填充颜色string默认与边的颜色一致
endArrowFillOpacity边终点箭头整体透明度number1
endArrowFillRule边终点箭头填充规则nonzero | evenodd-
endArrowFilter边终点箭头滤镜string-
endArrowIncreasedLineWidthForHitTesting边终点箭头大小较小时,可交互区域也随之变小,我们可以增大这个区域,让箭头更容易被拾取到number0
endArrowLineDash边终点箭头描边虚线配置number0
endArrowLineDashOffset边终点箭头描边虚线偏移量number0
endArrowLineJoin边终点箭头描边连接处样式round | bevel | miterround
endArrowOffset边终点箭头的偏移量number0
endArrowOpacity边终点箭头透明度number1
endArrowShadowBlur边终点箭头阴影模糊程度number-
endArrowShadowColor边终点箭头阴影颜色string-
endArrowShadowOffsetX边终点箭头阴影X轴偏移量number0
endArrowShadowOffsetY边终点箭头阴影Y轴偏移量number0
endArrowSize边终点箭头大小number | [number, number]-
endArrowSrc边终点箭头图片地址(传入图片地址即可以图片代替箭头)string-
endArrowStroke边终点箭头描边颜色string默认与边的颜色一致
endArrowStrokeOpacity边终点箭头描边透明度number1
endArrowTransform边终点箭头的旋转、缩放、倾斜或平移配置string-
endArrowTransformOrigin边终点箭头旋转与缩放中心,也称作变换中心stringcenter
endArrowType边终点箭头类型triangle | circle | diamond | vee | rect | triangleRect | simple | ((width: number, height: number) => PathArray)vee
endArrowZIndex边终点箭头渲染曾经number-

示例:

const graph = new Graph({
edge: {
style: {
stroke: '#1783F', // 边颜色
lineWidth: 2, // 边的宽度
label: true, // 开启边标签展示
labelText: 'labelText', // 边标签文字
labelPlacement: 'center', // 边标签相对于边的位置
labelFill: '#FF0000', // 边标签文字颜色
labelOffsetY: 20, // 边标签在y轴方向上的偏移量
halo: true, // 边光晕开启
haloStroke: '#000', // 边光晕颜色
haloStrokeOpacity: 0.2, // 边光晕透明度
badgeText: 'badge', // 边徽标文本
badgeFill: 'green', // 边徽标文本颜色
badgeOffsetX: 20, // 边徽标在x轴方向上的偏移量
badgePlacement: 'prefix', // 边徽标相对于边的位置
badgeBackground: true, // 边徽标背景开启
endArrow: true, // 边终点箭头开启
endArrowFill: 'yellow', // 边终点箭头填充颜色
},
},
});

效果如下:

createGraph(
{
data: {
nodes: [
{ id: 'node1', style: { x: 60, y: 40 } },
{ id: 'node2', style: { x: 180, y: 40 } },
],
edges: [{ source: 'node1', target: 'node2' }],
},
node: {
style: { fill: '#1783FF' },
},
edge: {
style: {
stroke: '#FF0000', // 边颜色
lineWidth: 2, // 边的宽度
label: true, // 开启边标签展示
labelText: 'labelText', // 边标签文字
labelPlacement: 'center', // 边标签相对于边的位置
labelFill: '#FF0000', // 边标签文字颜色
labelOffsetY: 20, // 边标签在y轴方向上的偏移量
halo: true, // 边光晕开启
haloStroke: '#000', // 边光晕颜色
haloStrokeOpacity: 0.2, // 边光晕透明度
badgeText: 'badge', // 边徽标文本
badgeFill: 'green', // 边徽标文本颜色
badgeOffsetX: 20, // 边徽标在x轴方向上的偏移量
badgePlacement: 'prefix', // 边徽标相对于边的位置
badgeBackground: true, // 边徽标背景开启
endArrow: true, // 边终点箭头开启
endArrowFill: 'yellow', // 边终点箭头填充颜色
},
},
},
{ width: 240, height: 100 },
);

自环边样式 loop

属性描述类型默认值
loop是否启用自环边booleantrue
loopClockwise指定是否顺时针绘制环booleantrue
loopDist从节点 keyShape 边缘到自环顶部的距离,用于指定自环的曲率number默认为宽度或高度的最大值
loopPlacement边的位置'left' | 'right' | 'top' | 'bottom' | 'left-top' | 'left-bottom' | 'right-top' | 'right-bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right''top'

示例:

const graph = new Graph({
data: {
nodes: [
{ id: 'node1', style: { x: 60, y: 40 } },
{ id: 'node2', style: { x: 180, y: 40 } },
],
edges: [
{ source: 'node1', target: 'node1', id: 'left' },
{ source: 'node2', target: 'node2', id: 'right' },
],
},
node: {
style: { fill: '#1783FF' },
},
edge: {
style: {
loopPlacement: (d) => d.id, // 根据边的 配置 设置自环的位置
endArrow: true, // 边终点箭头开启
},
},
});

效果如下:

createGraph(
{
data: {
nodes: [
{ id: 'node1', style: { x: 60, y: 40 } },
{ id: 'node2', style: { x: 180, y: 40 } },
],
edges: [
{ source: 'node1', target: 'node1', id: 'left' },
{ source: 'node2', target: 'node2', id: 'right' },
],
},
node: {
style: { fill: '#1783FF' },
},
edge: {
style: {
loopPlacement: (d) => d.id, // 根据边的 配置 设置自环的位置
endArrow: true, // 边终点箭头开启
},
},
},
{ width: 240, height: 100 },
);

State

在一些交互行为中,比如点击选中一个边或鼠标悬停激活一个边,仅仅是在该元素做了某些状态的标识。为了将这些状态反应到终端用户所见的视觉空间中,我们需要为不同的状态设置不同的图元素样式,以响应该图元素状态的变化。

G6 提供了几种内置的状态,包括选中(selected)、高亮(highlight)、激活(active)、不活跃(inactive)和禁用(disabled)。此外,它还支持自定义状态,以满足更特定的需求。对于每个状态,开发者可以定义一套样式规则,这些规则会覆盖元素的默认样式。

数据结构如下:

type EdgeState = {
[state: string]: EdgeStyle;
};

例如,当边处于 focus 状态时,可以为其添加一个宽度为 6 且颜色为黄色的光晕。

const graph = new Graph({
data: {
nodes: [{ id: 'node1' }, { id: 'node2' }],
edges: [{ source: 'node1', target: 'node2', states: ['focus'] }],
},
edge: {
state: {
focus: {
halo: true,
haloLineWidth: 6,
haloStroke: 'yellow',
},
},
},
layout: {
type: 'grid',
cols: 2,
},
});

效果如下图所示:

createGraph(
{
data: {
nodes: [{ id: 'node1' }, { id: 'node2' }],
edges: [{ source: 'node1', target: 'node2', states: ['focus'] }],
},
edge: {
state: {
focus: {
halo: true,
haloLineWidth: 6,
haloStroke: 'yellow',
},
},
},
layout: {
type: 'grid',
cols: 2,
},
},
{ width: 300, height: 100 },
);

Animation

定义边的动画效果,支持下列两种配置方式:

  1. 关闭边全部动画
{
"edge": {
"animation": false
}
}
  1. 配置阶段动画

阶段动画是指边在进入画布、更新、离开画布时的动画效果。目前支持的阶段包括:

  • enter: 边进入画布时的动画
  • update: 边更新时的动画
  • exit: 边离开画布时的动画
  • show: 边从隐藏状态显示时的动画
  • hide: 边隐藏时的动画
  • collapse: 边收起时的动画
  • expand: 边展开时的动画

你可以参考 动画范式 使用动画语法来配置边,如:

{
"node": {
"animation": {
"update": [
{
"fields": ["stroke"], // 更新时只对 stroke 属性进行动画
"duration": 1000, // 动画持续时间
"easing": "linear" // 缓动函数
}
],
}
}

也可以使用内置的动画效果:

{
"node": {
"animation": {
"enter": "fade", // 使用渐变动画
"exit": "fade" // 使用渐变动画
}
}
}

你可以传入 false 来关闭特定阶段的动画:

{
"node": {
"animation": {
"enter": false // 关闭边入场动画
}
}
}

Palette

定义边的色板,即预定义颜色池,并根据规则进行分配,将颜色映射到 stroke 属性。

有关色板的定义,请参考 色板。

属性描述类型默认值
type指定当前色板类型。
- group: 离散色板
- value: 连续色板
group | valuegroup
field指定元素数据中的分组字段。若不指定,默认取 id 作为分组字段string | ((datum) => string)id
color色板颜色。如果色板注册过,可以直接指定其注册名,也接受一个颜色数组string | string[]-
invert是否反转色板booleanfalse

如将一组数据按 direction 字段分配节点颜色,使得同类别的节点颜色相同:

const graph = new Graph({
data: {
nodes: new Array(6).fill(0).map((_, i) => ({ id: `node-${i + 1}` })),
edges: [
{ source: 'node-1', target: 'node-2', data: { direction: 'out' } },
{ source: 'node-1', target: 'node-3', data: { direction: 'out' } },
{ source: 'node-1', target: 'node-4', data: { direction: 'out' } },
{ source: 'node-5', target: 'node-1', data: { direction: 'in' } },
{ source: 'node-6', target: 'node-1', data: { direction: 'in' } },
],
},
layout: {
type: 'radial',
unitRadius: 120,
linkDistance: 120,
},
edge: {
style: {
endArrow: true,
},
palette: {
type: 'group',
field: 'direction',
color: ['#F08F56', '#00C9C9'],
},
},
});

效果如下图所示:

createGraph(
{
data: {
nodes: new Array(6).fill(0).map((_, i) => ({ id: `node-${i + 1}` })),
edges: [
{ source: 'node-1', target: 'node-2', data: { direction: 'out' } },
{ source: 'node-1', target: 'node-3', data: { direction: 'out' } },
{ source: 'node-1', target: 'node-4', data: { direction: 'out' } },
{ source: 'node-5', target: 'node-1', data: { direction: 'in' } },
{ source: 'node-6', target: 'node-1', data: { direction: 'in' } },
],
},
layout: {
type: 'radial',
unitRadius: 120,
linkDistance: 120,
},
edge: {
style: {
endArrow: true,
},
palette: {
type: 'group',
field: 'direction',
color: ['#F08F56', '#00C9C9'],
},
},
},
{ width: 600, height: 300 },
);

也可以使用默认配置:

{
"edge": {
"palette": "tableau" // tableau 为色板名,默认根据 ID 分配颜色
}
}

效果如下图所示:

createGraph(
{
data: {
nodes: new Array(6).fill(0).map((_, i) => ({ id: `node-${i + 1}` })),
edges: [
{ source: 'node-1', target: 'node-2', data: { direction: 'out' } },
{ source: 'node-1', target: 'node-3', data: { direction: 'out' } },
{ source: 'node-1', target: 'node-4', data: { direction: 'out' } },
{ source: 'node-5', target: 'node-1', data: { direction: 'in' } },
{ source: 'node-6', target: 'node-1', data: { direction: 'in' } },
],
},
layout: {
type: 'radial',
unitRadius: 120,
linkDistance: 120,
},
edge: {
style: {
endArrow: true,
},
palette: 'tableau',
},
},
{ width: 600, height: 300 },
);