首页 > 其他分享 >G6.js初体验(图形可视化引擎)

G6.js初体验(图形可视化引擎)

时间:2023-04-14 18:41:06浏览次数:53  
标签:node G6 初体验 name graph js 节点 流程图

前言

G6是支付宝前端团队推出的一款功能强大、易于使用的JavaScript图形库。在这篇博客中,我将介绍如何使用G6创建一个简单的流程图。

初体验

首先,我们需要准备好流程图数据。

在这个例子中,我们使用JSON格式来表示流程图,并为每个节点定义了其id、名称、类型和位置信息。例如:

const flowData = {
  //节点
  nodes: [
    { id: '001', name: '张三', type: 'node', x: 50, y: 100 },
    { id: '002', name: '李四', type: 'node', x: 150, y: 100 },
    { id: '003', name: '王五', type: 'node', x: 250, y: 100 },
    { id: '004', name: '老六', type: 'node', x: 350, y: 100 }
  ],
  //关系
  edges: [
    { source: '001', target: '002' },
    { source: '001', target: '003' },
    { source: '002', target: '004' }
  ]
};

接下来,我们需要在HTML中创建一个容器元素,并设置其宽度和高度。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>G6.js 初体验</title>
  <script src="https://gw.alipayobjects.com/os/antv/assets/g6/4.2.9/g6.min.js"></script>
</head>
<body>
  <div id="g6-container" style="width: 500px; height: 300px;"></div>

  <script>
    const container = document.getElementById('g6-container');
  </script>
</body>
</html>

然后,我们可以使用G6中的Graph类来创建一个流程图实例,并设置其容器、宽度和高度。

const graph = new G6.Graph({
  container,
  width: 500,
  height: 300,
  modes: {
    default: ['drag-canvas', 'zoom-canvas']
  }
});

在上面的代码中,我们还为流程图添加了两种交互模式:拖拽和缩放。这将允许用户通过拖动和缩放视图来浏览流程图。

接下来,我们可以使用graph.data()方法将流程图数据加载到图形中,并使用graph.render()方法呈现图形。我们还可以为节点和连线定义样式,以及为节点和连线添加标签。

graph.data(flowData);
graph.render();

graph.node(node => {
  return {
    shape: 'rect',
    label: node.name,
    style: {
      fill: '#fff',
      stroke: '#000'
    }
  };
});

graph.edge(edge => {
  return {
    shape: 'polyline',
    label: edge.type,
    style: {
      stroke: '#1890ff',
      lineWidth: 2
    }
  };
});

在上面的代码中,我们为节点使用矩形形状和名称标签,为连线使用折线形状和类型标签。我们还设置了节点和连线的样式,例如填充和边框颜色。

最后,我们可以添加事件处理程序来进行交互。例如,我们可以定义一个单击事件处理程序,以便在单击节点时弹出一个提示框。

graph.on('node:click', e => {
  const node = e.item;
  const name = node.getModel().name;
  alert(`Hello "${name}"`);
});

总结

在本篇博客中,我们介绍了如何使用G6创建一个简单的流程图。我们学习了如何加载数据、呈现图形、定义样式和添加事件处理程序。G6是一个功能强大且易于使用的JavaScript图形库,可以帮助开发人员创建出各种各样的可视化应用程序。

标签:node,G6,初体验,name,graph,js,节点,流程图
From: https://blog.51cto.com/u_15718546/6190751

相关文章

  • jsjiami.v6解密分析
    JS加密是Web前端开发中常用的一种技术,可以用于保护敏感数据或者代码,避免被恶意攻击者窃取或篡改。其中,JS加密库JSJiami.v6是一款广受欢迎的JS加密库,下面我们来详细介绍一下。JSJiami.v6是一款基于JavaScript语言的加密库,其主要功能是将JavaScript代码进行混淆、压缩和加密,使得代码......
  • AngularJS 输入验证
      属性描述$dirty表单有填写记录$valid字段内容合法的$invalid字段内容是非法的$pristine表单没有填写记录......
  • AngularJS 动画
    ngAnimate做了什么?ngAnimate模型可以添加或移除class。ngAnimate模型并不能使HTML元素产生动画,但是ngAnimate会监测事件,类似隐藏显示HTML元素,如果事件发生ngAnimate就会使用预定义的class来设置HTML元素的动画。AngularJS添加/移除class的指令:ng-s......
  • JS函数:递归函数与迭代函数
    1.递归函数:程序中调用自己的函数程序调用自身的编程技巧称为递归(recursion)。递归作为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归......
  • vue中使用jsx
    前言相对来说有些时候用jsx更合适,更灵活些安装依赖有对应的包支持yarnadd--dev@vitejs/plugin-vue-jsx配置插件在vite.config.jsimport{defineConfig}from"vite";importvuefrom"@vitejs/plugin-vue";importvueJsxfrom"@vitejs/plugin-vue-jsx";//ht......
  • 【js】setTimeout、Promise、Async/Await 的区别
    三者在事件循环中的是不同的,事件循环中分为宏任务队列和微任务队列 其中setTimeout的回调函数放到宏任务队列里,等到执行栈清空以后执行;promise.then里的回调函数会放到相应宏任务的微任务队列里,等宏任务里面的同步代码执行完再执行;async函数表示函数里面可能会有异步方法,a......
  • fastjson 1.2.24 反序列化漏洞(审计分析)
    环境JDK8u181Fastjson1.2.24POC跟进parse方法跟进到底层deserialze方法Poc中传入的dataSourceName:ldap://192.168.3.229:8084/vnSYPYwMs值这里实际对应setDataSourceName方法,调用此方法并传入ldap跟进setDataSourceName方法,这里只是简单赋值 步出......
  • jmeter接口关联,json提取器多个变量提取
    正则表达式提示单个变量 调用${boxTypeId}json提取器多变量提取  调用 请求数据  响应结果  ......
  • vue通过Export2Excel.js进行导入excel,获取数据
    <!--封装的模板下载和导入按钮和功能组件--><template><spanstyle="margin-left:10px"><el-buttonsize="mini"class="el-icon-download"@click="downFiles">下载模板</el-button><el-upload......
  • nodejs笔记
    node本质-跨平台js运行环境nodejs作用开发服务器应用(运行在服务器上)开发工具类应用(Webpack,Vite,Babel)开发桌面端应用(Vscode,postman)补充知识:nodexxx文件名可以运行文件nodejs中不能使用Dom和Bom的API,可以使用console和定时器APInodejs中顶级对象为global,也可以用g......