普通的图表,echarts 足够用,但是比如关系图等,echarts 定制化配置还是太麻烦。综合考量,还是 G6 方便 G6 是一个图可视化引擎。它提供了图
普通的图表,echarts 足够用,但是比如关系图等,echarts 定制化配置还是太麻烦。综合考量,还是 G6 方便
G6 是一个图可视化引擎。它提供了图的绘制、布局、分析、交互、动画等图可视化的基础能力。
1 | npm install --save @antv/g6 |
G6 使用
1 | <div id="mountNode"></div> |
- nodes 数组中包含节点对象,唯一的 id 是每个节点对象中必要的属性,x、 y 用于定位;
- edges 数组中包含边对象,source 和 target 是每条边的必要属性,分别代表了该边的起始点 id 与 目标点 id。
- 点和边的更多属性参见:内置的节点,内置的边 教程。
整体配置
配置项 | 类型 | 选项 / 示例 | 默认 | 说明 |
---|---|---|---|---|
fitView | Boolean | true / false | false | 是否将图适配到画布大小,可以防止超出画布或留白太多。 |
fitViewPadding | Number / Array | 20 / [ 20, 40, 50, 20 ] | 0 | 画布上的四周留白宽度。 |
animate | Boolean | true / false | false | 是否启用图的动画。 |
modes | Object | { default: [ ‘drag-node’]} | null | 图上行为模式的集合(如:拖拽、缩放)。由于比较复杂,按需参见:G6 中的 Mode 教程。 |
defaultNode | Object | { type: ‘circle’, style: {}} | null | 节点默认的属性,包括节点的一般属性和样式属性(style)。 |
defaultEdge | Object | {type: ‘polyline’, color: ‘#000} | null | 边默认的属性,包括边的一般属性和样式属性(style)。 |
nodeStateStyles | Object | {hover: {……},select: {…… }} | null | 节点在除默认状态外,其他状态下的样式属性(style)。例如鼠标放置(hover)、选中(select)等状态。 |
edgeStateStyles | Object | {hover: {……} ,select: {…… }} | null | 边在除默认状态外,其他状态下的样式属性(style)。例如鼠标放置(hover)、选中(select)等状态。 |
这个是初始化图表配置项
图布局 Layout
当数据中没有节点位置信息,或者数据中的位置信息不满足需求时,需要借助一些布局算法对图进行布局。
相比 echarts,支持布局多很多,G6 提供了 9 种一般图的布局和 4 种树图的布局:
一般图:
- Random Layout:随机布局;
- Force Layout:经典力导向布局:
力导向布局:一个布局网络中,粒子与粒子之间具有引力和斥力,从初始的随机无序的布局不断演变,逐渐趋于平衡稳定的布局方式称之为力导向布局。适用于描述事物间关系,比如人物关系、计算机网络关系等。
- Circular Layout:环形布局;
- Radial Layout:辐射状布局;
- MDS Layout:高维数据降维算法布局;
- Fruchterman Layout:Fruchterman 布局,一种力导布局;
- Dagre Layout:层次布局;
- Concentric Layout:同心圆布局,将重要(默认以度数为度量)的节点放置在布局中心;
- Grid Layout:格子布局,将节点有序(默认是数据顺序)排列在格子上。
树图布局:
- Dendrogram Layout:树状布局(叶子节点布局对齐到同一层);
- CompactBox Layout:紧凑树布局;
- Mindmap Layout:脑图布局;
- Intended Layout:缩进布局。
设置节点和背景
1 | const graph = new G6.Graph({ |