antv/g6使用教程及图配置

介绍

G6 是一款由蚂蚁金服 AntV 团队开发的 JavaScript 图形引擎,用于构建各种交互式可视化图形,包括但不限于图表、网络拓扑图、关系图、流程图等。无论是数据分析、决策支持,还是信息可视化,G6 都是一个强大的工具。

以下是 G6 的主要特点和能力:

  1. 丰富的图形元素支持:G6 支持多种图形元素,包括节点、边、群组、标签等,这些元素可以被自定义和样式化,以创建各种类型的图形。

  2. 交互性:G6 可以实现各种交互功能,如缩放、平移、拖拽、连线、节点拖拽等,以提供丰富的用户体验。

  3. 自动布局:G6 提供了多种自动布局算法,如树状布局、圆形布局、力导向布局等。

  4. 图表编辑:G6 支持图表的编辑功能,包括添加、删除、编辑节点和边,以及撤销和重做等功能。

  5. 扩展性:G6 允许开发人员根据项目需求轻松自定义和扩展功能,包括自定义渲染和交互行为。

  6. 多平台支持:G6 可以在浏览器和 Node.js 等环境中使用,这意味着你可以构建 Web 应用和服务器端应用。

使用

  1. HTML中CDN使用
<!DOCTYPE html>
<html><head><title>AntV G6 Demo</title>
</head><body><div id="container"></div><!-- 引用g6 --><script src="https://cdn.jsdelivr.net/npm/@antv/g6@3.7.0/dist/g6.min.js"></script><script>// 创建 G6 图表实例const container = document.getElementById('container');const width = container.scrollWidth;const height = container.scrollHeight || 500;const graph = new G6.Graph({container: container,width: width,height: height,defaultNode: {size: 20,style: {fill: '#C6E5FF',stroke: '#5B8FF9',lineWidth: 0.3,},labelCfg: {style: {fontSize: 12,},position: 'bottom',offset: 1,},},defaultEdge: {style: {lineWidth: 2,color: '#000',labelCfg: {autoRotate: true,refY: 5,style: {fill: '#000'}},endArrow: {fill: '#000',path: G6.Arrow.triangle(10, 12, 25),d: 25}}}});// 定义图表数据const data = {nodes: [{ id: 'node1', x: 100, y: 100, label: 'Node 1' },{ id: 'node2', x: 300, y: 100, label: 'Node 2' },],edges: [{ source: 'node1', target: 'node2', label: 'Edge 1' },],};// 渲染图表graph.data(data);graph.render();</script>
</body>
</html>
  1. npm 包引入
 npm install --save @antv/g6
import G6 from '@antv/g6';

react为例:

import React, {useEffect, useRef} from 'react'
import G6 from '@antv/g6';const  TestG6 = ()=> {const containerRef = useRef<HTMLDivElement>(null);const graphRef = useRef<any>();useEffect(()=>{initDraw()},[])const initDraw=()=>{graphRef.current = new G6.Graph({linkCenter:true,container: containerRef.current || '',height: 800,defaultNode: {size: 20,style: {fill: '#C6E5FF',stroke: '#5B8FF9',lineWidth: 0.3,},labelCfg: {style: {fontSize: 12,},position: 'bottom',offset: 1,},},defaultEdge: {style: {lineWidth: 2,color: '#000',labelCfg: {autoRotate: true,refY: 5,style: {fill: '#000'}},endArrow: {fill: '#000',path: G6.Arrow.triangle(10, 12, 25),d: 25}}}});const data = {nodes: [{ id: 'node1', x: 100, y: 100, label: 'Node 1' },{ id: 'node2', x: 300, y: 100, label: 'Node 2' },],edges: [{ source: 'node1', target: 'node2', label: 'Edge 1' },],};// 渲染图表graphRef.current.data(data);graphRef.current.render();}return (<div className='ModalgraphContainer' ref={containerRef} id="graphContainer"></div>)
}
export default TestG6;

效果如下:
在这里插入图片描述
从例子可以看出,g6的数据结构就是node(点)、edge(边)组成。点需要id,边需要source(起点id),target(终点id)。就可以绘制出简单的图了。

Graph 图配置

必须配置:

  • container:图的容器,可以传入该 DOM 的 id 或者直接传入容器的 HTML 节点对象
  • width、height:画布容器的宽高

常用配置:

  • modes: 用于配置图表的交互模式,如缩放、平移、选择等。可以通过配置不同的模式来控制用户的交互操作。

  • layout: 用于指定图表的布局算法,如树状布局、圆形布局、力导向布局等。

  • defaultNode: 默认节点的样式配置,包括节点的形状、颜色、大小、标签等。

  • defaultEdge: 默认边的样式配置,包括边的类型、颜色、标签等。

  • nodeStateStyles: 定义节点的不同状态下的样式,例如 hover、selected 等。

  • edgeStateStyles: 定义边的不同状态下的样式,例如 hover、selected 等。

  • nodeStyle: 用于为特定节点定义自定义样式函数,可以根据节点的数据动态设置样式。

  • edgeStyle: 用于为特定边定义自定义样式函数,可以根据边的数据动态设置样式。

  • defaultNodeSize: 默认节点的大小。

  • defaultEdgeSize: 默认边的大小。

  • minZoom: 允许的最小缩放比例。

  • maxZoom: 允许的最大缩放比例。

  • fitView: 是否自动缩放以适应容器大小。

  • fitViewPadding: 缩放自适应时的内边距。

  • animate: 是否启用动画效果,以及动画的配置项,如持续时间、缓动函数等。

  • plugins: 图表插件的配置,用于扩展图表的功能,如 tooltip、contextMenu 等。

  • autoPaint: 是否启用自动重绘,如果禁用,需要手动调用 graph.paint() 来渲染图表。

  • minZoom: 最小缩放比例。

  • maxZoom: 最大缩放比例。

  • defaultNodeShape: 默认节点的形状,可以是矩形、圆形、椭圆等。

  • defaultEdgeShape: 默认边的形状,可以是直线、曲线等。

本篇文章就介绍到这吧,后续会持续性解读g6的文档,更深入的探讨如何使用g6

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

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

相关文章

蓝牙 - BLE SPP实现举例 (Bluecode Protocol Stack)

这里以一个无线扫描枪设备为例&#xff0c;这个设备会通过蓝牙通讯协议连接一个底座&#xff0c;使用的是BLE SPP进行通讯。 扫描枪用来扫条码&#xff0c;解析出条码信息后&#xff0c;将数据通过无线传输给底座&#xff0c;底座再通过USB将数据传送给电脑。 底座是Central d…

一篇博客理解Recyclerview的使用

从Android 5.0开始&#xff0c;谷歌公司推出了RecylerView控件&#xff0c;当看到RecylerView这个新控件的时候,大部分人会首先发出一个疑问&#xff0c;recylerview是什么&#xff1f;为什么会有recylerview也就是说recylerview的优点是什么&#xff1f;recylerview怎么用&…

C#,数值计算——分类与推理Svmpolykernel的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class Svmpolykernel : Svmgenkernel { public int n { get; set; } public double a { get; set; } public double b { get; set; } public double d { get; set; …

故障诊断模型 | Maltab实现LSTM长短期记忆神经网络故障诊断

文章目录 效果一览文章概述模型描述源码设计参考资料效果一览 文章概述 故障诊断模型 | Maltab实现LSTM长短期记忆神经网络故障诊断 模型描述 长短记忆神经网络——通常称作LSTM,是一种特殊的RNN,能够学习长的依赖关系。 他们由Hochreiter&Schmidhuber引入,并被许多人进行了…

美妆造型教培服务预约小程序的作用是什么

美业市场规模很高&#xff0c;细分类目更是比较广&#xff0c;而美妆造型就是其中的一类&#xff0c;从业者也比较多&#xff0c;除了学校科目外&#xff0c;美妆造型教培机构也有生意。 对机构来说主要目的是拓客引流-转化及赋能&#xff0c;而想要完善路径却是不太容易&…

机器人的触发条件有什么区别,如何巧妙的使用

简介​ 维格机器人触发条件,分为3个,分别是: 有新表单提交时、有记录满足条件时、有新的记录创建时 。 看似3个,其实是能够满足我们非常多的使用场景。 本篇将先介绍3个条件的触发条件,然后再列举一些复杂的触发条件如何用现有的触发条件来满足 注意: 维格机器人所有的…

剖析C语言中的自定义类型(结构体、枚举常量、联合)兼内存对齐与位段

目录 前言 一、结构体 1. 基本定义与使用 2. 内存对齐 3. 自定义对齐数 4. 函数传参 二、位段 三、枚举 四、联合&#xff08;共同体&#xff09; 总结​​​​​​​ 前言 本篇博客将介绍C语言中的结构体&#xff08;struct&#xff09;、枚举&#xff08;enum&…

【Redis】高并发分布式结构服务器

文章目录 服务端高并发分布式结构名词基本概念评价指标1.单机架构缺点 2.应用数据分离架构应用服务集群架构读写分离/主从分离架构引入缓存-冷热分离架构分库分表&#xff08;垂直分库&#xff09;业务拆分⸺微服务 总结 服务端高并发分布式结构 名词基本概念 应⽤&#xff0…

【错误解决方案】ModuleNotFoundError: No module named ‘ngboost‘

1. 错误提示 在python程序&#xff0c;尝试导入一个名为ngboost的模块&#xff0c;但Python提示找不到这个模块。 错误提示&#xff1a;ModuleNotFoundError: No module named ‘ngboost‘ 2. 解决方案 出现上述问题&#xff0c;可能是因为你还没有安装这个模块&#xff0c;…

了解Docker的文件系统网络模式的基本原理

Docker文件系统 Linux基础 一个Linux系统运行需要两个文件系统&#xff1a; bootfs rbootfs bootfs&#xff08;boot file system&#xff09; bootfs 即引导文件系统&#xff0c;Linux内核启动时使用的文件系统。对于同样的内核版本的不同Lunx发行版本&#xff0c;其boot…

百度富文本上传图片后样式崩塌

&#x1f525;博客主页&#xff1a; 破浪前进 &#x1f516;系列专栏&#xff1a; Vue、React、PHP ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 问题描述&#xff1a;上传图片后&#xff0c;图片会变得很大&#xff0c;当点击的时候更是会顶开整个的容器的高跟宽 原因&#…

C++之类型转换

目录 一、C语言中的类型转换 二、C的强制类型转换 1、 static_cast 2、reinterpret_cast 3、 const_cast 4、dynamic_cast 一、C语言中的类型转换 在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&#xff0c;或者返回值类型…

idea的设置

1.设置搜索encoding,所有编码都给换为utf-8 安装插件 eval-reset插件 https://www.yuque.com/huanlema-pjnah/okuh3c/lvaoxt#m1pdA 设置活动模板,idea有两种方式集成tomcat,一种是右上角config配置本地tomcat,一种是插件,如果使用插件集成,则在maven,pom.xml里面加上tomcat…

openGauss学习笔记-110 openGauss 数据库管理-管理用户及权限-Schema

文章目录 openGauss学习笔记-110 openGauss 数据库管理-管理用户及权限-Schema110.1 创建、修改和删除Schema110.2 搜索路径 openGauss学习笔记-110 openGauss 数据库管理-管理用户及权限-Schema Schema又称作模式。通过管理Schema&#xff0c;允许多个用户使用同一数据库而不…

XML教学视频(黑马程序员精讲 XML 知识!)笔记

第一章XML概述 1.1认识XML XML数据格式&#xff1a; 不是html但又和html有点相似 XML数据格式最主要的功能就是数据传输&#xff08;一个服务器到另一个服务器&#xff0c;一个网站到另一个网站&#xff09;配置文件、储存数据当做小型数据可使用、规范数据格式让数据具有结…

多线程---synchronized特性+原理

文章目录 synchronized特性synchronized原理锁升级/锁膨胀锁消除锁粗化 synchronized特性 互斥 当某个线程执行到某个对象的synchronized中时&#xff0c;其他线程如果也执行到同一个对象的synchronized就会阻塞等待。 进入synchronized修饰的代码块相当于加锁 退出synchronize…

基于Qt 文本读写(QFile/QTextStream/QDataStream)实现

​ 在很多时候我们需要读写文本文件进行读写,比如写个 Mp3 音乐播放器需要读 Mp3 歌词里的文本,比如修改了一个 txt 文件后保存,就需要对这个文件进行读写操作。本章介绍简单的文本文件读写,内容精简,让大家了解文本读写的基本操作。 ## QFile 读写文本 QFile 类提供了读…

一个注解,实现数据脱敏-plus版

shigen坚持日更的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。坚持记录和分享从业两年以来的技术积累和思考&#xff0c;不断沉淀和成长。 当看到这个文章名的时候&#xff0c;是不是很熟悉&#xff0c;是的shigen之前发表了一个这…

【PC】特殊空投-2023年10月

亲爱的玩家朋友们&#xff0c;大家好&#xff01; 10月特殊空投活动来袭。本月我们也准备了超多活动等着大家来体验。快来完成任务获得丰富的奖励吧&#xff01;签到活动&#xff0c;每周一次的PUBG空投节&#xff0c;还有可以领取PGC2023免费投票劵的活动等着大家&#xff01;…

聊聊统一认证中的四种安全认证协议(干货分享)

大家好&#xff0c;我是陈哈哈。单点登录SSO的出现是为了解决众多企业面临的痛点&#xff0c;场景即用户需要登录N个程序或系统&#xff0c;每个程序与系统都有不同的用户名和密码。在企业发展初期&#xff0c;可能仅仅有几个程序时&#xff0c;管理账户和密码不是一件难事。但…