npm 包 @antv/hierarchy 使用教程

阅读时长 11 分钟读完

在前端开发中,数据可视化是一个十分重要的领域,而 @antv/hierarchy 是一个非常棒的 npm 包,可以帮助我们实现树形数据的可视化。本文将详细介绍该 npm 包的使用方法和具体示例,并希望能够对您的实际开发工作有所帮助。

安装

@antv/hierarchy 是基于 G6 和 HTML Canvas 来开发的,因此在安装之前,需要先安装 G6 和 HTML Canvas。具体安装方法如下:

安装完成后,可以通过以下命令来安装 @antv/hierarchy:

使用

@antv/hierarchy 的使用非常简单,只需要引入包并使用对应的接口即可。以下是一个简单示例:

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

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

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

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

如上所述,我们可以通过创建一个 Hierarchy 实例来实现树形数据的可视化。其中,data 参数是数据源,container 参数是渲染容器的 ID,widthheight 分别指定了渲染容器的宽度和高度。最后只需要调用 render 方法即可。

接口

@antv/hierarchy 提供了多个接口,可以根据实际需求来选择相应的接口来实现功能。以下是一些常用接口的简要说明:

  • setData(data):用于设置数据源。
  • getNodes():返回所有节点。
  • getEdges():返回所有边。
  • getNodeById(id):通过 ID 来获取指定节点。
  • getRootNode():获取根节点。
  • getNodesBBox(nodes):获取指定节点集合的包围盒。

这些接口会在具体示例中得到更详细的使用。

示例

为了更好地理解 @antv/hierarchy 的使用方法,以下将通过几个具体示例来介绍该 npm 包的更多细节。

1. 基本树形布局

以下是一个最基本的树形布局示例:

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

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

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

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

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

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

2. 自定义节点样式

下面是一些自定义样式的示例:

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

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

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

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

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

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

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

3. 监听节点事件

以下是一个监听节点事件的示例:

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

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

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

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

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

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

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

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

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

在这个例子中,我们监听了 node:mouseenternode:mouseleave 事件,当鼠标移入或移出节点时,会激活或取消 hover 状态。我们也可以监听其他事件,如 node:click 等。

4. 带控制器的树形数据

以下是一个带有控制器的树形数据示例:

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

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

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

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

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

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

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

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

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

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

以上是一个带有控制器的树形数据示例。通过 TreeGraphMenu 来实现控制器的并添加到图上。在示例中我们实现的功能是右击节点弹出删除菜单,点击删除菜单项删除对应节点并重新布局。

总结

通过本文的介绍,我们了解了 @antv/hierarchy 的基础知识,包括它的安装方法、使用方法、接口和示例。希望这篇文章能够帮助您学习数据可视化的相关知识,并在日常开发中进行实践,提高自己的技术水平。

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

纠错
反馈