【使用antv g6实现拓扑图】

devtools/2024/11/16 7:02:16/

使用antv g6实现拓扑图

  • 安装antv g6
  • 创建一个 div,并制定必须的属性 id
  • 定义初始化方法
  • 定义node节点数据
  • 将获取到的数据渲染进页面

安装antv g6

npm install @antv/g6 --save
import G6 from '@antv/g6';

创建一个 div,并制定必须的属性 id

定义好展示id,通过id获取dom数据

<div id="container" style="width: 100%;height: 800px"></div>

定义初始化方法

init() {const container = document.getElementById('container');//获取拓扑图的宽高const width = container.scrollWidth;const height = container.scrollHeight || 700;this.graph = new G6.Graph({// 使用 contextMenu plugins 时,需要将 container 设置为 position: relative;container: 'container',width,height,fitCenter: true,renderer: 'svg',linkCenter: true,// layout: {//   type: 'dagre',//   rankdir: 'LR', // 可选,默认为图的中心//   align: 'DL', // 可选//   nodesep: 20, // 可选//   ranksep: 50, // 可选//   controlPoints: true, // 可选// },//以中心为原点展示数据layout: {type: 'radial',// center: [ width/2, 400 ],     // 可选,默认为图的中心linkDistance: 400,         // 可选,边长maxIteration: 1000,       // 可选unitRadius: 250,          // 可选preventOverlap: true,     // 可选,必须配合 nodeSizenodeSize: 300,             // 可选strictRadial: true,       // 可选sortBy: 'data',sortStrength: 150// workerEnabled: true       // 可选,开启 web-worker},modes: {default: ['drag-canvas', 'drag-node', 'zoom-canvas'],},//设置node样式defaultNode: {type: 'image',size: 80,x: 760,y: 100,labelCfg: {fontsize: 20,style: {fontsize: 20}}},//设置线条的样式defaultEdge: {type: 'line',style: {startArrow: {path: G6.Arrow.vee(10, 12),d: 70,fill: '#f00',},stroke: '#5B8FF9',lineDash: [6, 3],},labelCfg: {refY: 15,// refX: 60,}}});//定义拓扑图节点的点击事件this.graph.on('node:click', (e) => {let item = e.item;let model = item.getModel();});},

定义node节点数据

let nodes =[{id:1,label: 第一个node,img: require('@/assets/img/icon-case.png'),//自定义node数据},{id:2,label: 第二个node,img: require('@/assets/img/icon-case.png'),//自定义node数据}
]

#定义edge数据

let edges = [{source: 1,target: 2,label: '关系'}
]

将获取到的数据渲染进页面

mounted() {this.init();let data = {nodes: nodes,edges: edges}this.graph.data(data);this.graph.render();},

http://www.ppmy.cn/devtools/134371.html

相关文章

三正科技笔试题

&#xff08;15题&#xff0c;45分钟&#xff0c;闭卷&#xff09; 一、( 8 分 &#xff09;请问以下程序输出什么结果&#xff1f; char *getStr(void) 。 &#xff5b; char p[] "hellow world"; return p; &#xff5d; void test(void) &#xff5b; ch…

(一)<江科大STM32>——软件环境搭建+新建工程步骤

一、软件环境搭建 &#xff08;1&#xff09;安装 Keil5 MDK 文件路径&#xff1a;江科大stm32入门教程资料/Keil5 MDK/MDK524a.EXE&#xff0c;安装即可&#xff0c;路径不能有中文。 &#xff08;2&#xff09;安装器件支持包 文件路径&#xff1a;江科大stm32入门教程资料…

Django 2024全栈开发指南(三):数据库模型与ORM操作(上篇)

目录 一、模型的定义二、数据迁移三、数据表关系四、数据表操作4.1 Shell工具4.2 数据新增4.3 数据修改4.4 数据删除4.5 数据查询 Django 对各种数据库提供了很好的支持&#xff0c;包括 PostgreSQL、MySQL、SQLite 和 Oracle&#xff0c;而且为这些数据库提供了统一的 API 方法…

分布式----Ceph部署

目录 一、存储基础 1.1 单机存储设备 1.2 单机存储的问题 1.3 商业存储解决方案 1.4 分布式存储&#xff08;软件定义的存储 SDS&#xff09; 1.5 分布式存储的类型 二、Ceph 简介 三、Ceph 优势 四、Ceph 架构 五、Ceph 核心组件 #Pool中数据保存方式支持两种类型&…

【Git从入门到精通】——Git分支介绍与GitHub相关知识总结

&#x1f3bc;个人主页&#xff1a;【Y小夜】 &#x1f60e;作者简介&#xff1a;一位双非学校的大二学生&#xff0c;编程爱好者&#xff0c; 专注于基础和实战分享&#xff0c;欢迎私信咨询&#xff01; &#x1f386;入门专栏&#xff1a;&#x1f387;【MySQL&#xff0…

Java项目实战II基于微信小程序的订餐系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导 一、前言 随着移动互联网技术的飞速发展&#xff0…

鸿蒙生态:开发者的新征程与挑战并存

随着科技的飞速发展&#xff0c;我们迎来了一个新的时代——鸿蒙系统的时代。作为开发者&#xff0c;我有幸见证了鸿蒙生态的崛起&#xff0c;并亲身参与其中。今天&#xff0c;我想和大家分享我对鸿蒙生态的认知&#xff0c;以及在这一生态下开发时遇到的挑战和我的应对策略。…

linux startup.sh shutdown.sh (kkFileView)

linux启动脚本和关闭脚本startup.sh shutdown.sh &#xff08;kkFileView&#xff09; startup.sh DIR_HOME("/opt/openoffice.org3" "/opt/libreoffice" "/opt/libreoffice6.1" "/opt/libreoffice7.0" "/opt/libreoffice7.1&q…