npm 包 @petitatelier/three-force-graph 使用教程

阅读时长 11 分钟读完

引言

在前端开发过程中,使用数据可视化的方法来展示复杂数据关系是一项非常重要的任务。D3.js 是一个流行的数据可视化库,但它的学习曲线非常陡峭,对于初学者来说学习成本很高。@petitatelier/three-force-graph 是一个基于 Three.js 和 d3-force 的 npm 包,它使用三维图形和力导向图的方式来展示数据关系。本文将详细介绍 @petitatelier/three-force-graph 的使用方法,并提供示例代码。

安装

使用 npm 安装 @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:节点是否已经被折叠(仅用于层级布局)。

  • fxfyfz:节点的固定位置。如果设置了任何一个,节点将无法被系统移动。如果想取消固定节点,可以设置 fxfyfz 为 null。

  • linkCount:节点的链接数量(仅用于层级布局)。

  • linkWithStrength:节点间链接的默认强度(仅用于层级布局)。

  • label:节点的标签文字。可以是一个字符串或一个包含以下属性的对象:

  • labelOffsetXlabelOffsetY:在计算节点位置时,标签的 x 和 y 偏移量。默认为 -10 和 -10。

  • userData:包含节点其他自定义属性的对象。这些属性可以在 nodeAutoColorBy 或自定义 Three.js 对象回调中使用。请注意,不应该将 idnamecoloropacityvallinkWithStrengthuserData 中自定义。

边也有许多自定义选项:

  • id:边的唯一标识符。
  • sourcetarget:边所连接的两个节点的 ID。
  • name:边的名称。
  • color:边的颜色,默认为随机颜色。
  • opacity:边的不透明度,默认为 1。
  • visibility:边的可见性。
  • curvature:边的曲率。值为 0 时表示直线。
  • width:边的宽度。
  • linkDistance:边强制执行的长度,不影响重力。
  • arrows:边的箭头样式。支持 sourcetarget 属性,如 {source: true, target: false}
  • lineWidth:网格对象的线条宽度。

配置示例

以下是一个完整的示例配置,充分展示了上面讲到的所有节点选项和边选项:

-- -------------------- ---- -------
-----------
  ------ -
    -
      --- -----
      ----- ----- ---
      ---------- --
      ---- ---
      ------ -------
      ------------ -----
      -------- ----
      ------ ------
      -- ---
      -- ---
      -- ---
      ----------------- ------ ----- ------
      --------- - ---- --- --
    --
    - --- ----- ----- ----- --- ---------- -- ------ ------- ------ --------- --
    - --- ----- ----- ----- --- ---------- -- ------ ------ --
    - --- ----- ----- ----- --- ---------- -- ------ ------ --
    - --- ----- ----- ----- --- ---------- -- ------ ------ --
  --
  ------ -
    - ------- ----- ------- ----- ----- ----- --- ------ ------ -------- --- --
    - ------- ----- ------- ----- ----- ----- --- ------ -------- -------- --- --
    - ------- ----- ------- ----- ----- ----- --- ------ ------- -------- --- --
    - ------- ----- ------- ----- ----- ----- -- --
    - ------- ----- ------- ----- ----- ----- -- --
    - ------- ----- ------- ----- ----- ----- -- --
  --
  ---------------- -------
  ------------ -----
  ------------ ----
  ---------- --
  -------- -----------
---

示例代码

以下是一些有趣的代码示例,展示了可以用 ForceGraph3D 实现的一些常见操作:

节点拖动

-- -------------------- ---- -------
-----
  ---------------
  -------------
  ----------------------------
  ------------------ ----------------------------------
  ---------------- ------------------- -- ------
  ------------------- -- -
    ------- - -------
    ------- - -------
    ------- - -------
  ---

层级布局

-- -------------------- ---- -------
---------------------------------- ------- ----- -- -
  ----- -------- - ------------------
    ------ -- --
    --------- -- -- ------- - ---------

  -----
    ---------------
    ------------- -- -------------------- -----
    --------------- -- ---------------
    -------------------- -- -------------- - ---- - ------
    ----------------------------
    ------------------ ----------------------------------
    ---------------- ------------------- -- ------
    ------------------ -----------------
    ------------------- ----------------------------- -- --------------------- - -----------------
    --------------
    ----------------------
    ----------------
    ------------------- -- -------------- --- --------
    ---------------------
---

重力和弹性

-- -------------------- ---- -------
-----
  ---------------
  -------------
  ----------------------------
  ------------------ ---------------------------------
  ---------------- ------------------- -- -------------------
  ------------- ------------
  ------------- ------------
  ------------- ------------
  --------------------- ----------------------------- -- ----------- - -----
  ------------------ -----------------
  ----------------

结论

通过本文,我们已经学习了如何使用 @petitatelier/three-force-graph 创建强大的力导向图,同时也了解了各种可用选项和一些示例代码,以便更好地利用这个 npm 包。如果你想要更深入学习,可以访问官方文档或查看 GitHub 仓库以获取更多信息。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671d630d0927023822b5a

纠错
反馈