AntV-G6手动添加节点和边,实现拓扑图的可视化展示

一小时实现简单的手动添加节点和边,实现可视化展示

在这里插入图片描述
左边:取消添加节点和边、获取的拓扑图数据、添加节点、添加边
在这里插入图片描述

中间:可视化展示区域
在这里插入图片描述

右边:修改节点信息、修改边信息
在这里插入图片描述

下面是一些关键代码

根据官网修改G6设置交互模式

添加节点

注册自定义事件:G6.registerBehavior

    /*** @description 注册点击添加节点*/addNode() {let _this = this;G6.registerBehavior("click-add-node", {// Set the events and the corresponding responsing function for this behaviorgetEvents() {// The event is canvas:click, the responsing function is onClickreturn {"canvas:click": "onClick",};},// Click eventonClick(ev) {const self = this;const graph = self.graph;// Add a new nodegraph.addItem("node", {x: ev.canvasX,y: ev.canvasY,id: `node-${_this.addedCount}`, // Generate the unique idlabel: `node-${_this.addedCount}`,});_this.addedCount++;},});},

添加边

注册自定义事件:G6.registerBehavior

    /*** @description 注册点击添加边*/addEdge() {G6.registerBehavior("click-add-edge", {// Set the events and the corresponding responsing function for this behaviorgetEvents() {return {"node:click": "onClick", // The event is canvas:click, the responsing function is onClickmousemove: "onMousemove", // The event is mousemove, the responsing function is onMousemove"edge:click": "onEdgeClick", // The event is edge:click, the responsing function is onEdgeClick};},// The responsing function for node:click defined in getEventsonClick(ev) {const self = this;const node = ev.item;const graph = self.graph;// The position where the mouse clicks// const point = { x: ev.x, y: ev.y };const model = node.getModel();if (self.addingEdge && self.edge) {graph.updateItem(self.edge, {target: model.id,});self.edge = null;self.addingEdge = false;} else {// Add anew edge, the end node is the current node user clicksself.edge = graph.addItem("edge", {source: model.id,target: model.id,});self.addingEdge = true;}},// The responsing function for mousemove defined in getEventsonMousemove(ev) {const self = this;// The current position the mouse clicksconst point = { x: ev.x, y: ev.y };if (self.addingEdge && self.edge) {// Update the end node to the current node the mouse clicksself.graph.updateItem(self.edge, {target: point,});}},// The responsing function for edge:click defined in getEventsonEdgeClick(ev) {const self = this;const currentEdge = ev.item;if (self.addingEdge && self.edge === currentEdge) {self.graph.removeItem(self.edge);self.edge = null;self.addingEdge = false;}},});},

点击节点,获取当前节点数据并进行修改

// 注册事件
graph.on("node:click", this.onNodeClick);
// 获取数据
onNodeClick(e) {this.mode = "node";const item = e.item.getModel();this.nodeData.label = item.label;this.nodeData.id = item.id;
}
// 修改数据
changeNodeName() {if (this.nodeData.id) {const item = graph.findById(this.nodeData.id);graph.updateItem(item, {label: this.nodeData.label,});}
}

点击边,获取当前边数据并进行修改

// 注册事件
graph.on("edge:click", this.onEdgeClick);
// 获取数据
onEdgeClick(e) {this.mode = "edge";const item = e.item.getModel();this.edgeData.label = item.label;this.edgeData.id = item.id;
}
// 修改数据
changeEdgeName() {if (this.edgeData.id) {const item = graph.findById(this.edgeData.id);graph.updateItem(item, {label: this.edgeData.label,});}
}

获取当前拓扑图的数据

getData() {console.log(graph.save());
}

在这里插入图片描述
非常简单的demo,仓库地址
想要更多的自定义的节点和边,可以看该仓库下的另一个页面,或者G6官网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/21711.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT来势凶猛,公有云格局会不会大变?

【引言】: AI风暴来袭,全球无人幸免。 但公有云与ChatGPT到底啥关系? 1) 公有云与ChatGPT,到底谁会“吃”掉谁? 【科技明说 | 热点关注】在看到公有云厂商纷纷开始大模型发布,开始GPT的融入之…

使用window便签功能实现桌面窗口置顶

在百度中搜索下载【DeskPins绿色汉化版】 https://dl-download.csdn.net/down11/20200708/0de0e95a267321e174e1ec3077edabaf.zip?response-content-dispositionattachment%3Bfilename%3D%2213542_DeskPins_16903.zip%22&security-tokenCAISgwJ1q6Ft5B2yfSjIr5b3eovVlO5jz…

QQ截图“钉在桌面上”:不用另外下载软件让图片在屏幕置顶,永远保持在最前面、最顶端

有时候为了方便“借鉴”某段文字写word时,需要频繁换窗口换文件,word挡住文字特别影响视线,属实是麻烦 这时QQ的“钉在桌面上”功能就起了大作用,还不用特地去下其他软件 比如要“参考”某篇写期末论文,就可以置于最…

win10如何置顶某个窗口

win10如何置顶某个窗口 方法一:Window Topmost Control方法二:OneQuick 网上很多推荐感觉都不太好用,要么收费,要么很阉割。这里推荐两个小工具。 方法一:Window Topmost Control 下载: 百度、谷歌自行下载…

windows窗口置顶--Windows on Top

目录 工具界面(非常简介): 使用方法 工具设置 快捷键设置及其他设置 在工作的时候,有时需要频繁切换窗口,而有时候需要看实时的数据请求,将窗口调小,又不好后面代码修改操作。这一款工具可以…

【窗口置顶神器】DeskPins

由于想边记笔记边看PPT,但是苦于笔记窗口老被PPT遮挡住,如果整小了笔记窗口或者PPT窗口又很不爽,所以才找到这个软件。 这个软件叫做DeskPins,非常好使,强烈推荐!此帖作为记录。 附上DeskPins下载地址 安…

利用ChatGPT协助编写单元测试

ChatGPT自从2022年推出以来受到很多人的喜欢,此篇博客重点介绍如何修改Prompt来自动生成较理想的单元测试。如下图所示的一段代码,该class中有一个public方法toLocale(),其余都是private方法,toLocale()方法会调用private的方法。&#xff08…

32岁医生放弃医院编制,转行去做程序员!

这年头大环境不好,程序员都想方设法往体制内跑,希望能端起稳定的铁饭碗。但也有人是逆行者,明明在体制内,却非要跳出去当程序员。 一个网友发帖说自己今年32岁,放弃了月薪7500元的二甲医院编制,转行去做ja…

文心一言发布我怎么看?

文心一言发布我怎么看? 文心一言发布会我只简短的回答两个问题:补充: 文心一言发布会 有想看发布会视频的朋友,关注爱书不爱输的程序猿,私信找我拿 我只简短的回答两个问题: 1.文心一言能否为百度止颓? 首先,百度的颓势是由于多种因素导致的&#xff0c…

ChatGPT - 生成新的想法并克服写作的障碍

文章目录 Prompt Prompt “我正在撰写有关[主题]的博客文章。为此博客文章提供一个包含10个要点的大纲。还给我5个引人注目的标题选项。”大纲:I. 介绍Flink - Flink是什么? - Flink的特点 - Flink的应用场景II. Flink的核心概念 - 流处理 vs 批处理 - …

革新写作方式:ChatGPT最新版带来高质量聚合文章的批量生成

随着人工智能技术的不断发展,自然语言处理模型也在不断进步。ChatGPT最新版作为一种强大的语言模型,可以生成高质量的聚合文章,为写作方式带来了革新。本文将详细阐述ChatGPT最新版带来的革新之处,包括其应用领域、生成文章的流程…

自动插入匹配与标题相关的百度图片或者搜狗图片软件-批量插入txt文档-Chatgpt批量写文章配图神器

1、我们用《Chatgpt 3.5-turbo软件》批量生成txt文档,但是这样txt文档里不带图片,直接发布到网站上,光有文字没有图片,效果也不是很理想,就需要一款配图软件。 2、该软件根据txt标题自动匹配百度图片或者搜狗图片里的…

ChatGPT最新版实现多样化聚合文章的批量生成文章

随着人工智能技术的不断发展,ChatGPT最新版在多样化聚合文章的批量生成方面取得了重要突破。本文将从随机选取的8个方面,对ChatGPT最新版的构建思想进行详细阐述。这些方面包括:自然语言处理、大规模数据集、迁移学习、多模态输入、生成模型优…

Python小案例:回合制奥特曼打怪兽游戏

from abc import ABCMeta, abstractmethod from random import randint, randrange import timeclass Fighter(object, metaclassABCMeta):"""战斗者"""# 通过__slots__魔法限定对象可以绑定的成员变量__slots__ (_name, _hp)def __init__(self…

奥特曼系列赛文飞踢是哪个服务器,昭和系6大奥特曼的“奥特飞踢”,泰罗的很敏捷,雷欧伤害最高!...

说起“奥特飞踢”那可是奥特曼格斗技能中非常炫酷的招式了,而且还能给怪兽造成不俗的伤害。记得小时候的小编在看奥特曼使用“奥特飞踢”打击怪兽时可是非常激动的,有时候甚至还幻想过自己也能使用这一招。毕竟小编不是练武术的,所以与这一招…

奥特曼系列ol光元在哪个服务器,奥特曼系列ol如何快速获得光元 奥特曼系列ol怎样快速获得光元...

奥特曼系列OL怎么刷光元?奥特曼系列ol刷光元bug有吗?奥特曼系列ol刷光元软件是真是假?奥特曼系列ol常规刷光元的方法是可以通过完成每日任务和成就任务来积累,但是这个过程比较长,需要长时间才能积累大量的光元。那么还…

7月6号奥特曼服务器维护中,泰迦奥特曼:7月6号开播,泰迦是泰罗儿子,优幸可变为三个奥特曼...

原标题:泰迦奥特曼:7月6号开播,泰迦是泰罗儿子,优幸可变为三个奥特曼 令和时代到来,奥特曼系列也将迎来全新的篇章,作为令和第一位奥特曼,不出预料的就是泰罗的儿子泰迦奥特曼。这一次官方总算实…

奥特曼系列ol如何进老服务器,《奥特曼系列OL》新手攻略

第一步就是最快速度进驻服务器,一般早上10点开服,游戏都这样,早点冲进去??这点很重要!理由在后面说 引导中的第一次抽卡 目前已知的第一抽可能有的角色是赛罗、阿古茹、阿斯特拉、希卡利。 从实战角度考虑,最有用的应…

奥特曼系列ol光元在哪个服务器,奥特曼系列ol光元怎么合理使用

奥特曼系列ol光元怎么合理使用 2016-02-21 作者:说玩小编 来源:说玩网 评论(9条) 我要评论 奥特曼系列ol光元怎么合理使用?在游戏中,光元是很珍贵且数量稀少的,我们平时在使用光元的时候是需要合理利用的,那么奥特曼系…

奥特曼系列服务器,奥特曼系列ol无限光元

奥特曼系列ol无限光元这款游戏的奥特曼非常的多,操作比较的不错,玩起来非常的给力带劲儿哟,剧情也是比较的丰富的,玩起来很有代入感哟,各种酷炫的动作非常的炫目的哟! 奥特曼系列ol无限光元玩家评论&#x…