数据可视化前端图表库【免费下载链接】G6♾ A Graph Visualization Framework in JavaScript.项目地址https://gitcode.com/gh_mirrors/g6/G6点击查看免费下载导读Indented缩进树布局是 AntV G6 中通过水平缩进量表达树节点层级的经典布局每个节点占据一行或一列天然适合文件目录、组织架构、分类体系等层级感优先的场景。本文以 G6 官方文档中 IndentedLayout 布局指南 为骨架逐项拆解其全部配置项与复杂类型并结合仓库内源码与测试用例演示direction、indent、getSide、dropCap等参数的实际效果读完即可在你的 G6 项目中直接落地一套可运行的缩进树。一、什么是缩进树布局Indented缩进树布局通过水平方向的缩进量来表示树节点的层级。与紧凑盒CompactBox、思维导图Mindmap等层叠放射式布局不同缩进树让每个元素占据一行或一列层级越深缩进越大视觉上像极了代码编辑器里的目录树。其典型适用场景包括文件目录结构可视化如仓库里的文件树组织架构树分类体系展示如算法分类、商品类目任何需要突出层级关系的树状数据从源码角度看G6 的indented布局并非自研实现而是直接复用了antv/hierarchy库中同名布局。在 packages/g6/src/layouts/index.ts 中可以看到export { compactBox, dendrogram, indented, mindmap } from antv/hierarchy;随后该布局被注册进 G6 的内置扩展表在 packages/g6/src/registry/build-in.ts 的layout段中layout: { ... indented: indented as any, ... }因此你在配置中写layout: { type: indented, ... }时G6 会从注册表中取出该实现并执行布局计算无需额外引入或注册任何东西。二、配置项总览IndentedLayout同时支持通用布局配置项和专有配置项完整清单如下来自 IndentedLayout.zh.md属性描述类型默认值必选type布局类型需为indentedindented-✓direction布局方向根节点在左/右/中间详见下文LR \| RL \| HLRindent列间间距支持固定值或函数number \| (d?: Node) number20getWidth获取每个节点宽度仅directionH时生效(d?: Node) number-getHeight获取每个节点高度(d?: Node) number-getSide节点排布在根节点的左/右侧设置后directionH失效(d?: Node) left \| right-dropCap每个节点的第一个子节点是否换行booleantrueisLayoutInvisibleNodes不可见节点是否参与布局preLayouttrue时生效booleanfalsenodeFilter参与该布局的节点(node: NodeData) boolean() truepreLayout使用前布局在初始化元素前计算布局booleanfalseenableWorker是否在 WebWorker 中运行布局boolean-iterations迭代布局的迭代次数number-其中enableWorker、iterations属于布局通用能力preLayout亦如此并非缩进树独有而isLayoutInvisibleNodes、nodeFilter常与折叠/展开场景配合使用用于控制隐藏节点是否参与占位计算。三、核心配置深度解析1. direction根节点的三种摆位direction决定根节点与子树的相对方向LR根节点在左整体向右布局。这是默认值也是文件树最常见的形态——最左侧是根子节点逐级向右缩进。RL根节点在右整体向左布局适合从右往左阅读的场景如某些 RTL 界面。H根节点在中间左右对称分布。子节点被自动分配到左右两侧整体呈鱼骨/梳子状适合根节点需要突出居中的展示。需要特别说明的是getSide一旦设置directionH的自动分侧逻辑即被覆盖详见下文getSide小节。2. indent列间缩进indent控制相邻层级之间的水平间距默认20支持两种写法固定数值所有层级的缩进保持一致例如indent: 40。函数(d?: Node) number可根据节点动态返回缩进值实现某些分支更宽、某些分支更紧凑的自定义效果。文档给出的示例(d) { if (d.parent?.id testId) return d.parent.x 50; return 100; };该函数接收布局中的节点对象可访问d.parent、d.x等属性返回值即该节点与其父节点的水平偏移量。这在目录层级深度差异大、需要按分支控制留白时非常实用。3. getWidth / getHeight按内容自适应尺寸getHeight获取每个节点的高度影响行间距与垂直排布。getWidth获取每个节点的宽度仅在directionH时生效因为水平对称布局需要知道节点宽度才能计算左右分侧占位。两者都支持函数形式常用于按文本内容自适应例如(d) (d.id testId ? 50 : 100);在 case-indented-tree.ts 测试用例中节点宽度甚至通过真实测量文本宽度得出size: (d) [measureText({ text: d.id, fontSize: 12 }) 6, 20],即文字多宽节点就多宽与getWidth按内容自适应的思路一致。4. getSide自定义左右分侧getSide允许你手动指定每个节点落在根节点的哪一侧返回left | right。设置后directionH的自动分侧逻辑失效完全以函数返回值为准(d) (d.id testId ? left : right);这使得重点分支放左侧、其余分支放右侧这类定制化排布变得非常直观。5. dropCap首子节点是否换行dropCap默认true含义是每个节点的第一个子节点是否换到新的一行。dropCap: true所有子节点包括第一个都换行排在父节点下方形成典型的倒 L 形目录树。dropCap: false第一个子节点与父节点保持同一行紧随其后后续子节点再换行视觉上更紧凑适合节点较宽、行数较多的场景。在仓库测试用例 layout-indented.ts 中使用的是默认dropCap行为 direction: LRindent: 30的经典组合。6. 与折叠展开、不可见节点相关的配置isLayoutInvisibleNodes当preLayouttrue时决定不可见如被折叠收起的节点是否仍参与布局占位。默认false表示隐藏节点不占位。nodeFilter筛选参与布局的节点默认全部参与。preLayout是否在初始化元素前预先计算布局适合需要在首帧前拿到坐标的场景。四、完整示例代码1. 子节点自动分布direction: H根节点居中子节点自动左右分布import { Graph, treeToGraphData } from antv/g6; fetch(https://gw.alipayobjects.com/os/antvdemo/assets/data/algorithm-category.json) .then((res) res.json()) .then((data) { const graph new Graph({ container: container, data: treeToGraphData(data), autoFit: view, layout: { type: indented, direction: H, indent: 80, getHeight: () 16, getWidth: () 32, }, }); graph.render(); });这里有两个关键点treeToGraphData将 JSON 树数据转换为 G6 的图数据G6 官方还内置了treeToGraphData等工具方法导出自 packages/g6/src/exports.ts。direction: H时getWidth生效必须提供节点宽度才能正确分侧。仓库中对应的测试用例 case-indented-tree.ts 正是使用algorithm-category.json数据集位于 packages/g6/tests/dataset/algorithm-category.json并通过treeToGraphData(data)渲染与上面的示例完全同源。2. 子节点右侧分布direction: LR根节点在左所有子节点统一向右分布——最经典的目录树形态// ... 代码同上layout.direction: LR3. 子节点左侧分布direction: RL根节点在右所有子节点统一向左分布// ... 代码同上layout.direction: RL4. 自定义子节点分布getSide手动指定回归、分类两个分支放左侧其余放右侧layout: { type: indented, direction: H, indent: 80, getHeight: () 16, getWidth: () 32, getSide: (d) { if (d.id Regression || d.id Classification) return left; return right; }, }5. 首子节点不换行dropCap: falselayout: { type: indented, direction: LR, indent: 80, getHeight: () 16, getWidth: () 32, dropCap: false, }五、仓库实战从 Demo 到完整缩进树应用如果你需要的不只是静态渲染而是可折叠/展开 可拖拽调整层级的交互式缩进树仓库中的 case-indented-tree.ts 是绝佳的参考实现。该用例展示了缩进树与 G6 扩展机制的深度结合自定义节点继承BaseNode注册了indented节点内置折叠/展开按钮Badge、子节点计数徽标和新增子节点按钮自定义边继承Polyline注册indented边将控制点收敛为[[sx, ty]]实现先水平后垂直的缩进树折线自定义行为注册collapse-expand-tree折叠/展开与drag-branch拖拽节点到其他节点下作为子节点两个行为布局配置layout: { type: indented, direction: LR, isHorizontal: true, indent: 40, getHeight: () 20, getVGap: () 10, },值得注意的是该用例还使用了isHorizontal、getVGap两个参数——它们来自antv/hierarchy布局实现的通用配置其中isHorizontal与direction配合声明水平布局方向getVGap控制兄弟节点垂直间距在官方文档的专有配置表中未单列但从仓库测试用例可以推断其作用。如果你需要精细控制行间距可以尝试它们。此外layout-indented.ts 提供了一个更精简的基线示例使用 file-system.json 文件系统数据direction: LR、indent: 30、getHeight/getWidth返回固定值 16配合edge: { type: polyline }即可得到标准的文件树缩进布局适合作为最小可运行模板。六、性能与工程实践建议综合文档与源码实现落地缩进树时有几点实践建议数据规模较大时开启 WorkerenableWorker: true可将布局计算放入 WebWorker避免阻塞主线程渲染iterations适用于迭代类布局的收敛控制。折叠场景配合preLayout如果使用collapse-expand行为动态收起/展开子树可考虑preLayout: trueisLayoutInvisibleNodes: false让隐藏分支不参与占位布局结果更紧凑。边类型建议缩进树与polyline折线边是天然搭档——仓库所有缩进树用例均使用 polyline 或自定义折线边水平垂直的走线能强化层级关系。direction: H必须提供getWidth水平对称布局依赖节点宽度计算左右占位缺失时布局可能不符合预期。缩进树适合行式层级数据若数据以层级嵌套的 JSON 组织如children数组配合treeToGraphData转换即可直接使用无需手动构建nodes/edges。总结Indented缩进树布局是 G6 中实现文件树 / 组织架构 / 分类目录类可视化最高效的方案之一配置简单type: indented即可启用、方向灵活LR / RL / H 三态、定制能力强indent、getWidth/getHeight、getSide、dropCap均可函数化。通过antv/hierarchy的底层实现与 G6 内置注册build-in.ts开发者无需额外依赖即可开箱即用若需交互能力仓库中的 case-indented-tree.ts 提供了折叠、展开、拖拽改层级的完整范式可直接参考改造进自己的业务中。赞分享数据可视化前端图表库【免费下载链接】G6♾ A Graph Visualization Framework in JavaScript.项目地址https://gitcode.com/gh_mirrors/g6/G6点击查看免费下载相关推荐G6 脑图树布局Mindmap完全指南左右双向展开的树布局配置与实战G6 脑图树布局Mindmap完全指南左右双向展开的树布局配置与实战 导读 本文面向使用 G6 进行树形数据可视化思维导图、数据血缘图等的开发者系统数据可视化前端图表库G6 生态树Dendrogram布局完全指南配置、方向与辐射模式实战G6 生态树Dendrogram布局完全指南配置、方向与辐射模式实战 生态树Dendrogram布局是 G6 图可视化框架中面向 层次聚类数据 的经典数据可视化前端图表库G6 力导向布局Force Layout完全指南物理模拟原理、配置项详解与实战示例G6 力导向布局Force Layout完全指南物理模拟原理、配置项详解与实战示例 力导向布局Force Directed Layout是 G6 中最数据可视化前端图表库创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
HLS 流媒体适配实战:H.264/H.265 编码兼容性与播放优化指南 /* 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 3:10:13
万知AI实战:从需求描述到一键生成PPT完整指南 /* 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 3:09:55
立创EDA铺铜批量过孔:5分钟搞定整板地孔阵列 /* 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 3:09:37
海信电视秋季新品打出王炸,双7旗舰首发,RGB-Mini LED电视体验常用常新 9月23日,2026海信电视召开秋季新品发布会,正式推出全新一代RGB-Mini LED影像旗舰U7T Pro、性能旗舰E7S Pro两大双7旗舰新品,一次性落地六大行业首发技术,从背光硬件、屏幕素质、专属画质到智能系统全方位革新,彻底改写… · 2026/9/24 3:53:35
CAD软件有哪些?建筑、机械、协同各领域代表软件梳理 CAD(Computer Aided Design,计算机辅助设计)软件是工程设计领域不可或缺的核心工具,广泛应用于建筑设计、机械制造、土木工程、电子电气、产品研发等众多行业。其核心目的是通过数字化手段提升设计效率、保证设计精度、便于协同与… · 2026/9/24 3:53:29
AI陪伴机器人DTO参数校验-把脏数据拦在门口 07-DTO参数校验-把脏数据拦在门口系列:AI 伙伴(AI-Partner)——具身智能陪伴机器人 数据接口部署与二次开发篇(07/12)一、为什么校验要放在"门口"
先说个真实场景:你在前端页面上提交一条健康记… · 2026/9/24 3:53:29
EMQX MQTT 桥接陈旧连接状态修复解析:从「假 Connected」到真实健康检查与自动重连 后端物联网消息队列通信 【免费下载链接】emqx The most scalable and reliable MQTT broker for AI, IoT, IIoT and connected vehicles 项目地址: https://gitcode.com/gh_mirrors/em/emqx 点击查看 免费下载 本文围绕 EMQX 开源仓库中 changes/ee/fix-15603.en.… · 2026/9/24 3:53:23
Dopamine 实验统计汇总实战:深入解析 colab.utils.summarize_data 逐迭代数据聚合 机器学习深度学习 【免费下载链接】dopamine Dopamine is a research framework for fast prototyping of reinforcement learning algorithms. 项目地址: https://gitcode.com/gh_mirrors/do/dopamine 点击查看 免费下载 导读:本文围绕 Dopamine 强化… · 2026/9/24 3:53:11
微信小程序|template 模板实战,学生、教师、奥运冠军卡片、 前言
在小程序开发中,经常会遇到页面多处重复展示相同结构的 UI,比如列表卡片、信息条目。如果重复写多份相同 wxml 代码,代码冗余、后期维护麻烦。小程序提供 <template>模板,可以把重复 UI 结构封装,一处定义… · 2026/9/24 3:53:05
基于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