dTree 入门指南:3 步画出支持多个父节点的数据树(家谱 / 组织关系)
dTree 入门指南3 步画出支持多个父节点的数据树家谱 / 组织关系【免费下载链接】dTreeA library for visualizing data trees with multiple parents, such as family trees. Built on top of D3.项目地址: https://gitcode.com/gh_mirrors/dt/dTreedTreenpm 包名d3-dtree是一个基于 D3.js 构建的开源 JavaScript 库专门用于可视化一个节点可以有多个父节点的数据树结构最典型的应用就是家谱每个人既有父亲又有母亲传统单父节点的树图在这里就不够用了。传统树图卡住的地方它专门来解决绝大多数树状图方案都隐含一个假设每个节点只有一个父节点。可现实数据并不总是这样——家谱里一个孩子同时连着父亲和母亲两条血缘线复杂组织里一个人可能同时挂在多个部门、多位负责人名下家族关系中还存在多段婚姻、收养等关系单纯父子嵌套描述不了。dTree 的建模方式是把婚姻关系当作一种独立的连接节点数据中每个节点下挂一个marriages列表每段婚姻记录一位配偶spouse和他们共同的孩子children。某个节点只要出现在多段婚姻的 children 里它在图上就自然拥有多个父节点血缘线自动连到各自的位置。这个设计是它能画出家谱的关键。适合谁谁不用考虑它适合需要在家谱、族谱、组织架构图、复杂层级关系页面中展示多父节点关系且会写一点前端 JavaScript 的开发者。不适合完全没有 JS 基础、只想要拖拽生成图表工具的纯新手只是画普通单父节点树的用户——D3 自带的层级布局d3.hierarchy已经够用引入 dTree 反而多此一举。另外注意两个运行前提页面里必须先加载D3 v4.x和lodash v4.xdTree 本身依赖它们工作。3 步完成安装与第一张图第 1 步拿到库。任选一种方式npm install d3-dtree # 或 yarn add d3-dtree也支持 Bowerbower install d3-dtree或者通过 jsDelivr 等 CDN 直接引入发布后的压缩文件dTree.min.js不写任何构建配置也能用。第 2 步加载依赖。在页面上引入 D3 v4.x 与 lodash v4.x这是唯一的外部依赖。第 3 步初始化渲染。准备好数据后一行调用const tree dTree.init(data, { target: #graph, // 渲染到的 DOM 容器 width: 1200, height: 800 });data是家谱数据下一节讲它的结构options是可选配置。返回的tree对象还内置了视口控制方法详见后面缩放一节。数据长什么样先看懂示例家谱仓库里自带一份可直接运行的示例数据 test/demo/data.json描述的是一姓 Niclas 家族的三代关系。每个节点的核心字段如下{ name: Niclas Superlongsurname, class: man, marriages: [{ spouse: { name: Iliana, class: woman }, children: [ { name: James }, { name: Jane } ] }], extra: {} }name节点上显示的名字class/textClass节点框和文字各自使用的 CSS 类名样式定制全靠它例如 demo 里男性是浅蓝底、女性是粉色底marriages该节点参与的所有婚姻每段婚姻包含一位spouse和一个children列表孩子可以嵌套自己的marriages逐代往下递归extra任意自定义数据会原样传给交互回调比如给 Iliana 存一个nickname: Illi点击时能直接取到。一个节点只要出现在两段不同婚姻的 children 里它就自动成为双父节点——数据本身不用额外标记多父关系是结构带来的。常用配置项尺寸、类名映射与调试开关options的默认值大致是画布 600×600、target: #graph、hideMarriageNodes: true默认不显示婚姻连接点、marriageNodeSize: 10、nodeWidth: 100四边margin为 0外加debug: false调试开关。其中最值得了解的是styles它定义了四类元素各自使用的 CSS 类名styles: { node: node, // 节点框 linage: linage, // 血缘连线 marriage: marriage, // 婚姻连线 text: nodeText // 节点文字 }换主题时既可以改这些类名也可以直接重定义对应 CSS两种方式都能生效。内置缩放与交互回调大图不乱、点击有反应返回的tree对象内置四个视口控制方法应对大型树结构的浏览tree.resetZoom()— 复位到初始视角tree.zoomToFit()— 自动缩放到整棵树都可见tree.zoomToNode(nodeId)— 聚焦到指定节点tree.zoomTo(x, y, zoom)— 移动到指定坐标和倍率。交互方面dTree 通过callbacks开放了整套钩子按需覆盖即可常用的有回调触发时机 / 用途nodeClick/nodeRightClick点击 / 右键某个节点拿到name、extra、idmarriageClick/marriageRightClick同上作用在婚姻连接点上textRenderer自定义节点显示的文字返回 HTML 字符串nodeRenderer自定义整个节点的渲染返回 HTML 字符串nodeSorter自定义节点在图中的排序示例想在人名后显示昵称只覆盖textRenderer就够了不必动其他渲染逻辑——这也是 demo 页面里对 Iliana 加括号备注的做法见 test/demo/index.html。如何自定义样式样式完全走 CSS 类README 给了一组开箱即用的默认样式核心五个类.linage { fill: none; stroke: black; } /* 血缘线 */ .marriage { fill: none; stroke: black; } /* 婚姻线 */ .node { background-color: lightblue; border: 1px solid; } .nodeText { font: 10px sans-serif; } .marriageNode { background-color: black; border-radius: 50%; }demo 的index.html在此之上又定义了man浅蓝底和woman粉底两个类配合数据里的class字段区分性别。想换风格时改节点外观动class对应的类改连线外观动linage/marriage改文字动textClass对应的类三者互不干扰。本地运行官方 Demo想直接看到效果克隆仓库后三步跑起来开发环境基于 Node 11 与 gulp 3git clone https://gitcode.com/gh_mirrors/dt/dTree cd dTree yarn install yarn run build yarn run demoyarn run demo会在localhost:3000上把 test/demo 目录跑起来页面自动加载刚编译的库和data.json家谱点击、右键节点都会弹出提示方便逐条体验回调行为。源码结构与项目状态核心逻辑集中在 src/dtree.js初始化、布局、交互回调与 src/builder.jsDOM 构建想改默认渲染或布局策略从这两个文件入手即可。项目采用 MIT 许可证当前 npm 版本为 2.4.1欢迎按 CONTRIBUTING.md 的规范提交改进。一句话收尾如果你的数据是单父节点的普通树用 D3 自带的层级布局一旦出现一个人对应多个父节点的家谱或复杂组织关系dTree 是目前少数开箱即用、且样式和交互都能自定义的 D3 方案。【免费下载链接】dTreeA library for visualizing data trees with multiple parents, such as family trees. Built on top of D3.项目地址: https://gitcode.com/gh_mirrors/dt/dTree创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

GTA5菜单YimMenu:编译、崩溃防护与热键自定义一次搞懂

GTA5菜单YimMenu:编译、崩溃防护与热键自定义一次搞懂

GTA5菜单YimMenu:编译、崩溃防护与热键自定义一次搞懂 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimM…

2026/8/23 10:04:03 阅读更多 →
从洛谷P1042乒乓球题解析编程中的边界条件与状态机思维

从洛谷P1042乒乓球题解析编程中的边界条件与状态机思维

1. 从一道“简单”的编程题说起 如果你刚开始接触算法竞赛,或者正在学习编程,那么“洛谷P1042:乒乓球”这道题,大概率是你绕不开的一道坎。它看起来平平无奇,题目描述的是一个我们非常熟悉的乒乓球计分规则&#xff0c…

2026/8/23 10:04:03 阅读更多 →
C语言内存本质:数据类型是编译时契约,运行时只有地址与字节

C语言内存本质:数据类型是编译时契约,运行时只有地址与字节

很多C语言初学者,甚至一些有经验的开发者,常常会陷入一个思维定式:认为 int a 10; 中的 a 是一个“整数类型”的实体。编译器、教科书和我们的日常对话也都在强化“数据类型”这个概念。然而,当我们深入到计算机系统的底层&a…

2026/8/23 10:04:03 阅读更多 →

最新新闻

虚拟文件系统设计与实现:华为OD机试C卷解析

虚拟文件系统设计与实现:华为OD机试C卷解析

1. 项目背景与需求解析 最近在准备华为OD机试的同学们应该都注意到了2026双机位C卷中出现的这道虚拟文件系统题目。作为一道典型的系统设计类考题,它综合考察了数据结构运用、文件系统基础原理和C面向对象编程能力。这道题要求我们模拟实现一个简化版的虚拟文件系统…

2026/8/23 10:44:18 阅读更多 →
OpCore-Simplify:快速生成完整 OpenCore EFI 的实用指南

OpCore-Simplify:快速生成完整 OpenCore EFI 的实用指南

OpCore-Simplify:快速生成完整 OpenCore EFI 的实用指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore-Simplify 是一款脚本式黑苹…

2026/8/23 10:44:18 阅读更多 →
拯救者BIOS调优完整指南:3个场景解锁Insyde隐藏选项

拯救者BIOS调优完整指南:3个场景解锁Insyde隐藏选项

拯救者BIOS调优完整指南:3个场景解锁Insyde隐藏选项 【免费下载链接】LEGION_Y7000Series_Insyde_Advanced_Settings_Tools 支持一键修改 Insyde BIOS 隐藏选项的小工具,例如关闭CFG LOCK、修改DVMT等等 项目地址: https://gitcode.com/gh_mirrors/le/…

2026/8/23 10:44:18 阅读更多 →
数维杯数学建模竞赛:A/B/C三类赛题通用破题思路与实战建模指南

数维杯数学建模竞赛:A/B/C三类赛题通用破题思路与实战建模指南

1. 赛题核心与破题思路总览 又到了一年一度的数维杯数学建模竞赛季,对于很多初次参赛或者希望冲击更高奖项的同学来说,面对A、B、C三道风格迥异的题目,如何快速抓住核心、建立有效的解题框架,往往是决定成败的第一步。我参加过多次…

2026/8/23 10:44:18 阅读更多 →
AI代码生成工具Codex实战:提升全栈开发效率的提示词模板与技巧

AI代码生成工具Codex实战:提升全栈开发效率的提示词模板与技巧

大家好,我是专注于分享开发实战经验的博主。在快节奏的迭代中,你是否也经历过为了一个低级语法错误或API调用问题而通宵达旦?是否在面对多语言技术栈切换时感到力不从心?今天,我将为大家深度解析一款被誉为“全栈开发效…

2026/8/23 10:44:18 阅读更多 →
IINA macOS 视频播放器快速上手:4 项设置 + 2 个工作流,10 分钟用它到顺手

IINA macOS 视频播放器快速上手:4 项设置 + 2 个工作流,10 分钟用它到顺手

IINA macOS 视频播放器快速上手:4 项设置 2 个工作流,10 分钟用它到顺手 【免费下载链接】iina The modern video player for macOS. 项目地址: https://gitcode.com/gh_mirrors/iin/iina 还在 macOS 上拿 QuickTime 看视频,MKV 打不…

2026/8/23 10:43:18 阅读更多 →

日新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/22 18:08:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/22 7:31:03 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →