数据可视化前端图表库【免费下载链接】G6♾ A Graph Visualization Framework in JavaScript.项目地址https://gitcode.com/gh_mirrors/g6/G6点击查看免费下载矩形节点是 G6 中最基础、应用最广泛的节点形态之一。它以明确的边界和规整的几何形状天然适合表达模块、组件、容器等实体并常被用于组织架构图、文件目录树、流程图、架构图与 UML 图等层级或流程类场景。本文以 G6 官方文档 Rect.en.md 为主线结合仓库中矩形节点的源码实现与测试用例系统讲解 Rect 节点的创建方式、核心与扩展样式配置、内建状态表现以及其底层绘制原理帮助你从会用进阶到懂原理。Rect 节点是什么在 G6 中节点Node通过node.type指定具体形态。当type为rect时节点将渲染为一个矩形它是由 G6 内置注册的矩形节点类Rect绘制的注册位置见 packages/g6/src/registry/build-in.ts其中rect: Rect即为该类型的内建注册项。适用场景根据官方文档的定位矩形节点主要适合以下场景表示模块、组件或容器用矩形边界承载一块明确的功能区域如微服务模块、系统组件、业务流程中的处理单元。表示层级关系组织架构图、文件目录树等需要盒子套盒子的表达方式矩形天然贴合。流程与架构类图示流程图、架构图、UML 图等大量使用矩形作为标准图形元素。官方在线体验官方文档通过嵌入式 Playground 提供了可直接交互的在线示例见 packages/site/common/api/elements/nodes/rect.md其中将node.type设置为rect即可实时拖拽调节矩形的宽size[0]与高size[1]createGraph( { autoFit: center, data: { nodes: [{ id: node1, style: { size: 40, fill: #7e3feb } }] }, node: { type: rect }, plugins: [{ type: grid-line, size: 30 }], }, { width: 600, height: 220 }, );快速上手创建一个 Rect 节点在真实业务中最简单的 Rect 节点用法如下import { Graph } from antv/g6; const graph new Graph({ container: container, data: { nodes: [{ id: node-1, style: { size: [160, 80], fill: #7e3feb } }], }, node: { type: rect, }, }); graph.render();要点说明container图渲染挂载的 DOM 容器 iddata.nodes[].style.size既可以是数字如40表示宽高相等的正方形也可以是数组如[160, 80]分别表示宽度与高度对应官方 Playground 中的size[0]与size[1]两个调节项node.type: rect声明节点形态为矩形缺省该配置时 G6 会使用默认节点类型。核心几何样式尺寸与圆角Rect节点的实现位于 packages/g6/src/elements/nodes/rect.ts。从源码看矩形主体key shape由antv/g的GRect图形绘制核心逻辑在getKeyStyle中protected getKeyStyle(attributes: ParsedRectStyleProps): GRectStyleProps { const [width, height] this.getSize(attributes); return { ...super.getKeyStyle(attributes), width, height, x: -width / 2, y: -height / 2, }; }从中可以确认几个实现细节size会被解析为宽width与高height矩形以节点中心为原点绘制因此x、y取负半宽与负半高即矩形的几何中心即节点坐标位置这与边、连接桩等依赖中心点的计算保持一致除宽高外矩形还继承了BaseNode的全部通用图形样式fill、stroke、lineWidth、opacity等并支持通过radius设置圆角。仓库内的演示用例 element-node-rect.ts 就展示了radius: 4的圆角矩形配置node: { type: rect, // Node shape type. style: { radius: 4, // Set the radius. size: 40, labelText: (d) d.id!, iconFontFamily: iconfont, iconText: \ue602, }, },扩展样式能力label / halo / icon / badge / portRect 节点并非只有一个矩形。由于Rect继承自BaseNode见 packages/g6/src/elements/nodes/base-node.ts它天然具备五层结构key主体、halo光晕、icon图标、badges徽标、label标签、ports连接桩。BaseNode.render方法依次绘制这些图形public render(attributes this.parsedAttributes, container: Group this) { // 1. key shape this._drawKeyShape(attributes, container); // 2. halo this.drawHaloShape(attributes, container); // 3. icon this.drawIconShape(attributes, container); // 4. badges this.drawBadgeShapes(attributes, container); // 5. label this.drawLabelShape(attributes, container); // 6. ports this.drawPortShapes(attributes, container); }通用属性默认值BaseNode为这些扩展能力提供了一组默认值见 base-node.ts理解它们有助于判断为什么某些样式没生效属性默认值说明size32默认节点尺寸label/labelTexttrue/ 无标签开关需配合labelText才显示文字labelPlacementbottom标签默认位于节点下方labelMaxWidth200%标签最大宽度超过自动换行halofalse光晕默认关闭haloLineWidth/haloStrokeOpacity12/0.25光晕描边宽度与透明度icontrue图标默认开启但需提供iconText或iconSrcbadge/badgestrue/[]徽标默认开启但列表为空不渲染port/portstrue/[]连接桩默认开启但列表为空不渲染图标尺寸的等比缩放矩形节点在绘制图标时还有一个独特处理getIconStyle会根据 key 图形矩形的实际宽高乘以ICON_SIZE_RATIO等比计算图标尺寸见 rect.ts从而保证图标始终与矩形大小协调不会出现大矩形配小图标或反之的失衡情况。状态样式active / selected / highlight / inactive / disabled官方文档的完整示例通过states字段一次性展示了 6 种内建交互状态下的矩形表现default、halo、badges、ports、active、selected、highlight、inactive、disabled。状态通过在节点数据上声明states数组来触发const data { nodes: [ { id: default }, { id: active, states: [active] }, { id: selected, states: [selected] }, { id: highlight, states: [highlight] }, { id: inactive, states: [inactive] }, { id: disabled, states: [disabled] }, ], };active激活、selected选中、highlight高亮、inactive失活、disabled禁用都是 G6 内建的状态名称可通过graph.setElementState动态切换配合主题Theme可以统一定义每种状态下矩形的填充色、描边色与透明度实现鼠标悬停、点击选中、数据高亮等常见交互反馈。完整示例一个包含全部扩展能力的 Rect 节点以下是官方文档提供的完整示例保留原始代码并补充注释它综合展示了 Rect 节点的标签、图标字体、光晕、徽标与连接桩配置import { Graph, iconfont } from antv/g6; // 引入 iconfont 图标字体用于 iconText 的图标渲染 const style document.createElement(style); style.innerHTML import url(${iconfont.css});; document.head.appendChild(style); const data { nodes: [ { id: default }, { id: halo }, { id: badges }, { id: ports }, { id: active, states: [active] }, { id: selected, states: [selected] }, { id: highlight, states: [highlight] }, { id: inactive, states: [inactive] }, { id: disabled, states: [disabled] }, ], }; const graph new Graph({ container: container, data, node: { type: rect, style: { size: 40, // 标签文本取节点 id labelText: (d) d.id, // 使用 iconfont 字体与对应码点渲染图标 iconFontFamily: iconfont, iconText: \ue602, // 仅 id 为 halo 的节点显示光晕 halo: (d) (d.id halo ? true : false), // 仅 id 为 badges 的节点显示 3 个徽标分别位于右上、右侧、右下 badges: (d) d.id badges ? [ { text: A, placement: right-top }, { text: Important, placement: right }, { text: Notice, placement: right-bottom }, ] : [], badgeFontSize: 8, badgePadding: [1, 4], // 连接桩半径 portR: 3, // 仅 id 为 ports 的节点在四个方位各显示一个连接桩 ports: (d) d.id ports ? [{ placement: left }, { placement: right }, { placement: top }, { placement: bottom }] : [], }, }, // 使用 grid 布局将节点排布整齐 layout: { type: grid, }, }); graph.render();这段代码的实用价值在于展示了 G6 节点样式配置的函数式写法labelText、halo、badges、ports等属性都支持(d) ...回调按节点数据动态返回样式实现同一图内不同节点形态各异的效果。动态更新 Rect 节点样式官方 Playground 展示了运行时更新矩形尺寸的标准 API 流程——通过graph.updateNodeData修改节点样式后调用graph.render()重绘graph.updateNodeData([ { id: node1, style: { size: [object[size[0]], object[size[1]]] }, }, ]); graph.render();size同时支持数字与[width, height]数组两种写法更新时传入数组即可分别控制矩形的宽与高这一能力可用于实现节点自适应文本长度、拖拽改尺寸等交互。源码实现与注册机制注册链路rect类型能在node.type: rect下被识别依赖内置注册表。在 build-in.ts 的node分类中rect: Rect与circle、diamond、donut、ellipse、hexagon、html、image、star、triangle并列共同构成 G6 的内建节点类型集合。继承关系与扩展点Rect类本身非常轻量约 50 行其核心价值在于两点继承BaseNode获得通用能力标签、光晕、图标、徽标、连接桩的绘制逻辑全部收敛在基类中见 base-node.ts仅需实现drawKeyShape抽象方法官方基类注释明确说明自定义节点时推荐继承BaseNode只需关注主体图形的绘制逻辑即可。Rect正是这一扩展模型的典型范例——开发者可以参照它通过extend快速定制圆角矩形胶囊矩形等衍生节点。测试与快照验证仓库为 Rect 节点提供了对应的单元测试与快照断言见 rect.spec.ts测试基于 element-node-rect.ts 演示用例构建图实例并通过toMatchSnapshot对渲染结果进行 SVG 快照比对describe(element label oversized, () { it(render, async () { const graph await createDemoGraph(elementNodeRect); await expect(graph).toMatchSnapshot(__filename); graph.destroy(); }); });这说明矩形的圆角、尺寸、图标字体渲染等行为都有自动化测试兜底可以作为你自定义节点时编写测试的参考模板。小结Rect 节点是 G6 内置节点之一通过node.type: rect启用注册于 build-in.ts矩形主体由GRect绘制size支持数字与[w, h]数组两种写法并以节点中心为原点见 rect.ts继承BaseNode获得 label / halo / icon / badge / port 五类扩展能力支持函数式动态样式与active、selected、highlight、inactive、disabled等内建状态运行时可通过updateNodeDatarender动态调整矩形尺寸与样式所有通用样式属性可参考 BaseNode.en.md交互式参数调节可体验官方 Playground rect.md。赞分享数据可视化前端图表库【免费下载链接】G6♾ A Graph Visualization Framework in JavaScript.项目地址https://gitcode.com/gh_mirrors/g6/G6点击查看免费下载相关推荐G6 矩形节点Rect完全指南配置、样式与源码实现解析G6 矩形节点Rect完全指南配置、样式与源码实现解析 矩形节点是 G6Graph Visualization Framework in JavaScr数据可视化前端图表库sentry-elixir与Plug/Phoenix集成构建稳定的Web应用监控系统sentry elixir与Plug/Phoenix集成构建稳定的Web应用监控系统 sentry elixir是Sentry官方推出的Elixir SDK数据可视化前端图表库G6 圆形节点Circle Node完全指南样式配置、状态切换与源码实现剖析G6 圆形节点Circle Node完全指南样式配置、状态切换与源码实现剖析 导读 圆形节点Circle Node是 G6 中最基础、最常用的节点形态数据可视化前端图表库上一篇microeco项目中Alpha多样性计算问题的技术解析下一篇Snipsnap未来路线图多语言支持和IDE扩展计划创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
课堂异常行为检测系统:从YOLO到教学落地的全栈实践 简介:本资源是一份面向教育技术研究者、AI算法工程师及高校教学管理人员的深度学习实践方案,聚焦课堂场景下学生异常行为(如玩手机、睡觉)的自动检测与分析问题。文档系统阐述了基于VGG迁移学习的CNN建模方法,涵盖数据… · 2026/9/23 16:33:49
3分钟读懂defining源码解析:解决版本升级API突变 3分钟读懂defining源码解析:解决版本升级API突变 昨天还在用 v3.2 的 config.defining() 方法跑得好好的,今天把依赖升到 v4.0,代码直接报错 TypeError: defining is not a… · 2026/9/23 16:33:49
PHP实现USDT安全归集:ERC20授权管理与冷钱包签名实践 简介:面向PHP开发者的USDT授权管理优化方案,聚焦ERC20、TRC20通证在扫码授权、空投授权场景下的合约划扣与冷钱包安全机制。新版采用全后端处理流程,免去以往版本需修改代码的繁琐环节,重点解决受权账户资金被转、鱼苗被杀等资产安… · 2026/9/23 16:33:49
G6 布局通用配置项完全指南:LayoutOptions 核心字段与运行机制 数据可视化前端图表库 【免费下载链接】G6 ♾ A Graph Visualization Framework in JavaScript. 项目地址: https://gitcode.com/gh_mirrors/g6/G6 点击查看 免费下载 本文围绕 AntV G6 布局系统的通用配置项展开,系统讲解 Graph 的 layout 配置中所有通… · 2026/9/24 2:30:54
STM32驱动TMC5160步进电机:免SPI独立模式实战指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 2:30:54
RobotGo 开源贡献实战指南:Bug 报告、代码审查、签署与版本分支规范全解析 RPAGUI 自动化 【免费下载链接】robotgo RobotGo, Go Native cross-platform RPA, GUI automation, Auto test and Computer use vcaesar 项目地址: https://gitcode.com/gh_mirrors/ro/robotgo 点击查看 免费下载 RobotGo(github.com/go-vgo/robotgo&a… · 2026/9/24 2:30:48
深入解析 PHPStan `match.alwaysFalse`:match 分支永假的判定、成因与修复 开发工具代码质量静态分析 【免费下载链接】phpstan PHP Static Analysis Tool - discover bugs in your code without running it! 项目地址: https://gitcode.com/gh_mirrors/ph/phpstan 点击查看 免费下载 match.alwaysFalse 是 PHPStan 在检测 match 表达式时报… · 2026/9/24 2:30:23
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44