引言
在前端开发过程中,使用数据可视化的方法来展示复杂数据关系是一项非常重要的任务。D3.js 是一个流行的数据可视化库,但它的学习曲线非常陡峭,对于初学者来说学习成本很高。@petitatelier/three-force-graph 是一个基于 Three.js 和 d3-force 的 npm 包,它使用三维图形和力导向图的方式来展示数据关系。本文将详细介绍 @petitatelier/three-force-graph 的使用方法,并提供示例代码。
安装
使用 npm 安装 @petitatelier/three-force-graph:
npm install @petitatelier/three-force-graph
基本用法
以下是一个最基本的使用示例:
-- -------------------- ---- ------- ------ - -- ----- ---- -------- ------ ------------ ---- ---------------------------------- -- --- -------- -- ----- ----- - --- -------------- ----- ------ - --- --------------------------- ----------------- - ------------------- ---- ------ ----- -------- - --- ---------------------- ----------------------------------- -------------------- ----------------------------------------------- -- -- ------------ -- ----- ----- - ------------------------------------ -- ------ ----- ------------------- ----- -- -- - ----- -------- - --- ------------------------ ----- -------- - --- ------------------------- ----- --- ------ --- -------------------- ---------- -- ------------ ------ - - --- -------- ------ -------- -- - --- -------- ------ -------- -- - --- -------- ------ -------- -- -- ------ - - ------- -------- ------- ------- -- - ------- -------- ------- ------- -- - ------- -------- ------- ------- -- -- --- -- ---- -------- --------- - ------------------------------- ---------------------- -------- - ----------
上面的代码会展示一个包含三个节点和三条边的力导向图。
在上面的示例中,我们创建了一个 Three.js 场景和一个 ForceGraph3D 实例。然后,我们使用 .nodeThreeObject()
方法来定义每个节点的 Three.js 对象。最后,我们使用 .graphData()
方法添加节点和边。在调用 .graphData()
方法之前,我们需要先调用 renderer.domElement
方法把 ForceGraph3D 添加到 Three.js 场景中。
配置
@petitatelier/three-force-graph 提供了许多配置选项,可以通过传递一个配置对象来进行自定义。
节点
节点有许多可配置的选项:
id
:节点的唯一标识符。name
:节点的名称。color
:节点的颜色,默认为随机颜色。val
:节点的大小,默认为 1。autoColorBy
:自动根据节点属性设置颜色。可设置值为节点的唯一属性名称或一个函数。如果使用函数,函数将接收一个节点对象,并应该返回一个 css 颜色字符串。opacity
:节点的不透明度,默认为 1。visibility
:节点的可见性。collapsed
:节点是否已经被折叠(仅用于层级布局)。fx
、fy
、fz
:节点的固定位置。如果设置了任何一个,节点将无法被系统移动。如果想取消固定节点,可以设置fx
、fy
或fz
为 null。linkCount
:节点的链接数量(仅用于层级布局)。linkWithStrength
:节点间链接的默认强度(仅用于层级布局)。label
:节点的标签文字。可以是一个字符串或一个包含以下属性的对象:{ text: "Label text", // 文字 color: "green", // 颜色 xOff: 10, // x偏移量 yOff: -10 // y偏移量 }
labelOffsetX
和labelOffsetY
:在计算节点位置时,标签的 x 和 y 偏移量。默认为 -10 和 -10。userData
:包含节点其他自定义属性的对象。这些属性可以在nodeAutoColorBy
或自定义 Three.js 对象回调中使用。请注意,不应该将id
、name
、color
、opacity
、val
或linkWithStrength
在userData
中自定义。
边
边也有许多自定义选项:
id
:边的唯一标识符。source
和target
:边所连接的两个节点的 ID。name
:边的名称。color
:边的颜色,默认为随机颜色。opacity
:边的不透明度,默认为 1。visibility
:边的可见性。curvature
:边的曲率。值为 0 时表示直线。width
:边的宽度。linkDistance
:边强制执行的长度,不影响重力。arrows
:边的箭头样式。支持source
和target
属性,如{source: true, target: false}
。lineWidth
:网格对象的线条宽度。
配置示例
以下是一个完整的示例配置,充分展示了上面讲到的所有节点选项和边选项:
-- -------------------- ---- ------- ----------- ------ - - --- ----- ----- ----- --- ---------- -- ---- --- ------ ------- ------------ ----- -------- ---- ------ ------ -- --- -- --- -- --- ----------------- ------ ----- ------ --------- - ---- --- -- -- - --- ----- ----- ----- --- ---------- -- ------ ------- ------ --------- -- - --- ----- ----- ----- --- ---------- -- ------ ------ -- - --- ----- ----- ----- --- ---------- -- ------ ------ -- - --- ----- ----- ----- --- ---------- -- ------ ------ -- -- ------ - - ------- ----- ------- ----- ----- ----- --- ------ ------ -------- --- -- - ------- ----- ------- ----- ----- ----- --- ------ -------- -------- --- -- - ------- ----- ------- ----- ----- ----- --- ------ ------- -------- --- -- - ------- ----- ------- ----- ----- ----- -- -- - ------- ----- ------- ----- ----- ----- -- -- - ------- ----- ------- ----- ----- ----- -- -- -- ---------------- ------- ------------ ----- ------------ ---- ---------- -- -------- ----------- ---
示例代码
以下是一些有趣的代码示例,展示了可以用 ForceGraph3D 实现的一些常见操作:
节点拖动
-- -------------------- ---- ------- ----- --------------- ------------- ---------------------------- ------------------ ---------------------------------- ---------------- ------------------- -- ------ ------------------- -- - ------- - ------- ------- - ------- ------- - ------- ---
层级布局
-- -------------------- ---- ------- ---------------------------------- ------- ----- -- - ----- -------- - ------------------ ------ -- -- --------- -- -- ------- - --------- ----- --------------- ------------- -- -------------------- ----- --------------- -- --------------- -------------------- -- -------------- - ---- - ------ ---------------------------- ------------------ ---------------------------------- ---------------- ------------------- -- ------ ------------------ ----------------- ------------------- ----------------------------- -- --------------------- - ----------------- -------------- ---------------------- ---------------- ------------------- -- -------------- --- -------- --------------------- ---
重力和弹性
-- -------------------- ---- ------- ----- --------------- ------------- ---------------------------- ------------------ --------------------------------- ---------------- ------------------- -- ------------------- ------------- ------------ ------------- ------------ ------------- ------------ --------------------- ----------------------------- -- ----------- - ----- ------------------ ----------------- ----------------
结论
通过本文,我们已经学习了如何使用 @petitatelier/three-force-graph 创建强大的力导向图,同时也了解了各种可用选项和一些示例代码,以便更好地利用这个 npm 包。如果你想要更深入学习,可以访问官方文档或查看 GitHub 仓库以获取更多信息。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671d630d0927023822b5a