antv/g6使用教程及图配置

news2024/10/6 16:29:18

介绍

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.coloradmin.cn/o/1150638.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python采集电商jd app商品详情数据(2023-10-30)

一、技术要点&#xff1a; 1、cookie可以从手机app端用charles抓包获取&#xff1b; 2、无需安装nodejs&#xff0c;纯python源码&#xff1b; 3、商品详情接口为&#xff1a;functionId "wareBusiness"&#xff1b; 4、clientVersion "10.1.4"同…

自学C语言的最恐怖的地方是什么?

自学C语言的最恐怖的地方是什么&#xff1f; 当年在网吧学C&#xff0c;人家在玩游戏&#xff0c;我在敲代码&#xff0c;基本上从9点敲到1点&#xff0c;然后再开始玩游戏。。。当时不是装逼&#xff0c;就是觉得有意思&#xff0c;而且当时计算机的确是一门很高大上的职业。…

redis加入window服务及删除

1、命令redis-server.exe --service-install redis.windows.conf&#xff0c;在服务中可配置自动启动 删除redis服务&#xff0c;先停止redis服务运行&#xff0c;管理员cmd模式&#xff0c;sc delete "redis" ,

mysql 间隙锁

mysql 默认是可重复读的隔离级别&#xff0c;这种默认会有幻读&#xff0c;幻读指的什么现象呢&#xff0c;就是在同一个事物中前后两次查到的结果不一致&#xff0c;那么mysql是怎么解决幻读的呢&#xff0c;这就是mvcc mvcc 什么是mvcc呢&#xff0c;就是多版本并发控制&am…

数据结构之树(图解)

文章目录 前言一、树是什么&#xff1f;二、树的特点三、树的相关概念四、树的表示方法&#xff08;孩子兄弟表示法&#xff09;总结 前言 在学习完线性结构&#xff0c;例如顺序表、链表、栈、队列后&#xff0c;我们要开始学习一个新的数据结构----树 一、树是什么&#xf…

超全整理,Jmeter性能测试-脚本error报错排查/分布式压测(详全)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 性能脚本error报错…

iOS 使用dsym符号化线上crash日志(ips文件)

1.获取崩溃日志 可以iphone连接mac复制当时的崩溃日志。 Xcode->Window->Devices View Device Logs 如果是testflight的崩溃是可以分享的&#xff0c;分享出来可能是ips文件。 把文件名称改成my.crash 使用脚本把新版本崩溃日志转成老版本格式 这一步不是必须的&…

c++小惊喜——stringstream

当需要读取一行字符串时&#xff0c;我们通常会有将这个字符串分开的想法 #include<iostream> #include<sstream> using namespace std;int main() {string str;getline(cin, str);stringstream ssin(str);string s[10];int cnt 0;while (ssin >> s[cnt]) …

vue实现记事本(含样式)

实现增加、删除、全删、合计功能。 html代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport&q…

中文复制到ubuntu内变为乱码

如果你将中文文本复制到 Ubuntu操作系统内后出现乱码&#xff0c;这可能是字符编码设置不正确所致。 检查终端编码设置&#xff1a; 在终端中&#xff0c;确保你的终端编码设置正确。你可以使用locale 命令来检查系统的默认编码 设置。一般来说&#xff0c;UTF-8是一种广泛支持…

【K8s】白话容器基础(二):隔离与限制

白话容器基础&#xff08;二&#xff09;&#xff1a;隔离与限制 容器与虚拟机 在上一篇文章中&#xff0c;我详细介绍了 Linux 容器中用来实现“隔离”的技术手段&#xff1a;Namespace。而通过这些讲解&#xff0c;你应该能够明白&#xff0c;Namespace 技术实际上修改了应…

如何本地部署Jellyfin影音服务器并实现在公网访问

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及&#xff0c;各种各样的使用需求也被开发出来&…

如何做好企业的设备维护和保养?报修工单管理系统软件有哪些?

随着信息化技术的飞速发展&#xff0c;企业运营的各个方面都在逐步实现信息化。设备维护作为企业运营中的重要环节&#xff0c;其可靠性对于企业的正常运营至关重要。报修工单管理系统软件作为解决这一问题的有效方案&#xff0c;已经受到业界的广泛关注。本文将从测评专家的角…

window安装es服务及删除

elasticsearch-service.bat install 删除es服务&#xff0c;先停止es服务运行&#xff0c;管理员cmd模式&#xff0c;sc delete "elasticsearch-service-x64"

基于安卓Android的城市公交查询app

项目介绍 本课题城市公交线路查询&#xff0c;采用安卓平台&#xff0c;所完成的可扩展性、可靠性以及可重用性的城市公交线路查询系统&#xff0c;以满足现实生活的需要。数据库选用MySQL。 前端为移动端&#xff0c;采用安卓框架uniapp&#xff0c;开发软件为Android Studio…

【方法】Excel表格如何禁止查看公式?

在日常工作中&#xff0c;很多人会选择用Excel来做数据表格&#xff0c;有时候还要通过公式来做数据。那如果计算数据所用的公式不想让别人看到&#xff0c;可以怎么做呢&#xff1f;今天小编就来分享一下&#xff0c;如何设置Excel表格禁止查看公式。 以下图表格为例&#xf…

String 字符串不可变带来的好处是什么?

目录 1. 线程安全(数据安全) 2. 节约内存 3. 提高集合的存取效率 1. 线程安全(数据安全) 众所周知&#xff0c;String 字符串是默认被 final 修饰的&#xff0c;是不可变的&#xff0c;那么首先能想到的一个优点就是线程安全&#xff0c;String 是存放在堆中的&#xff0c;是…

NSSCTF 2nd Web 题目复现

php签到 考点&#xff1a; 1.上传表单html的编写 2./. 绕过黑名单&#xff08;在Linux系统下1.php.是一个合法的文件名&#xff0c;系统不会自动把最后的点去掉并把文件当成php文件执行&#xff0c;所以点绕过只在Windows下有用&#xff09; 源代码&#xff1a; <?phpfun…

ICS TRIPLEX T9432 电源模块

电源模块是电子装备中的重要组成部分&#xff0c;用于供给电能以供给装备中的各种电子元件和电路。电源模块具备多种特征&#xff0c;以保证供给稳定、否靠的电源&#xff0c;顺应不同运用的需要。以下是电源模块的一些主要特征&#xff1a; 电压和电流输入&#xff1a; 电源模…

纬创出售印度子公司给塔塔集团,结束iPhone代工业务 | 百能云芯

纬创&#xff08;Wistron&#xff09;董事会于10月27日通过决议&#xff0c;同意以1.25亿美元的价格出售其印度子公司Wistron InfoComm Manufacturing (India) Private Limited&#xff08;WMMI&#xff09;的100%股权给塔塔集团&#xff0c;交割将尽快完成。此举将意味着纬创退…