编写组件,react真香
import React,{ useEffect, useState } from 'react'import { data } from './data';import G6 from '@antv/g6';export const G6Dome = (props)=>{const [ graph, setGraph ] = useState(undefined);useEffect(() => {if (!graph){const devicegraph = new G6.Graph({container: "container", //指定容器width: 500, //容器宽度height: 500, //容器高度defaultNode: { //节点对象shape: "circle",size: [80],color: "#5B8FF9",style: {fill: "#9EC9FF",lineWidth: 1},labelCfg: {style: {fill: "#fff",fontSize: 20}}},defaultEdge: { //边缘对象style: {stroke: "#333"}}});devicegraph.read(data);setGraph(devicegraph);}}, [])return <div ><h3> 拖拽流程图</h3><div id='container'> </div></div>}
数据源
export const data = {nodes: [{id: 'node1', // 节点的唯一标识x: 100, // 节点横坐标y: 200, // 节点纵坐标label: '起始点', // 节点文本},{id: 'node2',x: 300,y: 200,label: '目标点',},],edges: [{source: "node1",target: "node2",label: '联线描述'}]}
元素的属性
{
id: 'node0', // 元素的 id
type: 'circle', // 元素的图形
size: 40, // 元素的大小
label: 'node0' // 标签文字
labelCfg: { // 标签配置属性
positions: 'center',// 标签的属性,标签在元素中的位置
style: { // 包裹标签样式属性的字段 style 与标签其他属性在数据结构上并行
fontSize: 12 // 标签的样式属性,文字字体大小
// ... // 标签的其他样式属性
}
}
// ..., // 其他属性
style: { // 包裹样式属性的字段 style 与其他属性在数据结构上并行
fill: '#000', // 样式属性,元素的填充色
stroke: '#888', // 样式属性,元素的描边色
// ... // 其他样式属性
}
}
布局
layout: {
type: 'force', // 设置布局算法为 force
linkDistance: 100, // 设置边长为 100
preventOverlap: true, // 设置防止重叠
}
一般图
- Random Layout:随机布局;
Force Layout:经典力导向布局:
力导向布局:一个布局网络中,粒子与粒子之间具有引力和斥力,从初始的随机无序的布局不断演变,逐渐趋于平衡稳定的布局方式称之为力导向布局。适用于描述事物间关系,比如人物关系、计算机网络关系等。
Circular Layout:环形布局;
- Radial Layout:辐射状布局;
- MDS Layout:高维数据降维算法布局;
- Fruchterman Layout:Fruchterman 布局,一种力导布局;
- Dagre Layout:层次布局。
树形图
- Dendrogram Layout:树状布局(叶子节点布局对齐到同一层);
- CompactBox Layout:紧凑树布局;
- Mindmap Layout:脑图布局;
- Intended Layout:缩进布局。
