主流框架中快速使用 AntV G6图可视化

什么是 G6

G6 是一个前端图可视化引擎。它提供了图的绘制、布局、分析、交互、动画等基础的图可视化能力。让用户看到的数据关系变得透明,简单。

官方API文档:https://g6.antv.vision/zh/docs/api/Graph

一、安装 & 引用
 npm install --save @antv/g6  // 安装
 
 import G6 from '@antv/g6'  // 在需要用的 G6 的 JS 文件中导入
二、快速使用步骤
  1. 创建关系图的 HTML 容器;
  2. 数据准备;
  3. 创建关系图;
  4. 配置数据源,渲染。

1、创建容器

<div id="mountNode"></div>

2. 数据准备

const data = {
  nodes: [
    {
      id: '0',
      label: '0',
    },
    {
      id: '1',
      label: '1',
    },
    {
      id: '2',
      label: '2',
    },
    {
      id: '3',
      label: '3',
    }
  ],
  edges: [
    {
      source: '0',
      target: '1',
    },
    {
      source: '0',
      target: '2',
    },
    {
      source: '0',
      target: '3',
    }
  ]
};

nodes 数组中包含节点对象,唯一的 id 是每个节点对象中必要的属性
edges 数组中包含边对象,source 和 target 是每条边的必要属性,分别代表了该边的起始点 id 与 目标点 id。

3.创建关系图

const graph = new G6.Graph({
  container: 'mountNode',  // String | HTMLElement,必须,在 Step 1 中创建的容器 id 或容器本身
  width: 800,              // Number,必须,图的宽度
  height: 500              // Number,必须,图的高度
});

4.配置数据源,渲染

graph.data(data);  // 读取 Step 2 中的数据源到图上
graph.render();    // 渲染图

最终图形
在这里插入图片描述

三、Demo代码详解
import G6 from '@antv/g6';    //先安装后引入

const data = {   // 数据,包含流程图的节点 和 边
  nodes: [
    {
      id: '0',
      label: '0',
    },
    {
      id: '1',
      label: '1',
    },
    {
      id: '2',
      label: '2',
    },
    {
      id: '3',
      label: '3',
    },
    {
      id: '4',
      label: '4',
    },
    {
      id: '5',
      label: '5',
    },
    {
      id: '6',
      label: '6',
    },
    {
      id: '7',
      label: '7',
    },
    {
      id: '8',
      label: '8',
    },
    {
      id: '9',
      label: '9',
    },
  ],
  edges: [
    {
      source: '0',
      target: '1',
    },
    {
      source: '0',
      target: '2',
    },
    {
      source: '0',
      target: '3',
    },
    {
      source: '0',
      target: '4',
    },
    {
      source: '0',
      target: '5',
    },
    {
      source: '0',
      target: '7',
    },
    {
      source: '0',
      target: '8',
    },
    {
      source: '0',
      target: '9',
    },
    {
      source: '2',
      target: '3',
    },
    {
      source: '4',
      target: '5',
    },
    {
      source: '4',
      target: '6',
    },
    {
      source: '5',
      target: '6',
    },
  ],
};

const tipDiv = document.createElement('div');
const graphDiv = document.getElementById('container');
graphDiv.appendChild(tipDiv);
const width = graphDiv.scrollWidth;
const height = graphDiv.scrollHeight;
const graph = new G6.Graph({
  container: 'container',
  width,
  height,
  layout: {
    type: 'force',       // 流程图显示形式 'dagre'....
    preventOverlap: true,
    nodeSize: 20,
  },
  modes: {
    // 设置默认节点和默认边的地方,‘zoom-canvas’ 参数的作用是鼠标滚动可以对图形方法缩小
    default: ['drag-node', 'zoom-canvas'],
  },
  defaultNode: {
    size: 30,    //节点大小
    style: {
      fill: '#C6E5FF',    // 节点填充颜色
      stroke: '#5B8fF9',  // 节点边框颜色
    },
  },
  defaultEdge: {
    size: 1,     // 连线的粗细
    color: '#e2e2e2',  // 连线的颜色
    style: {
      endArrow: {     // 连线末端的箭头,不需要可以不设置
        path: 'M 0,0 L 8,4 L 8,-4 Z',
        fill: '#e2e2e2',
      },
    }
  },
});

graph.on('beforelayout', function () {    // 布局时机监听
  tipDiv.innerHTML =
    'Doing force-directed layout... the text will be changed after the layout being done.';
});

graph.on('afterlayout', function () {   // 布局完成
  tipDiv.innerHTML = 'Done!';
});

graph.data(data);     // 塞入数据
graph.render();       // 加载流程图

在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值