npm 包 recharts 使用教程

阅读时长 16 分钟读完

前言

在前端开发中,数据可视化是非常重要的一个环节,而围绕数据可视化开发的工具库也越来越丰富。其中,recharts 是一款基于 React 实现的强大的数据可视化库。它可以满足我们大部分的数据可视化需求,并且使用方便、灵活性高,非常适合在前端项目中使用。本文就来详细介绍下 recharts 的使用方法,希望对大家有所帮助。

recharts 概述

recharts 是一个基于 React 和 D3 的数据可视化库。它提供了丰富的图表类型、交互式元素和自定义样式等功能,可以帮助我们快速实现各种各样的数据可视化效果。此外,recharts 还具有良好的扩展性,可以轻松地加入更多自定义的交互功能、数据处理等。

recharts 的主要特点如下:

  • 具有丰富的组件,包括折线图、柱状图、饼图、雷达图等等,能够满足大部分的数据可视化需求。

  • 支持灵活的数据格式,数据源可以是数组、对象、函数等等,同时支持数据的自定义处理方式。

  • 提供了多种交互方式,如 tooltip、brush、zoom 等,可以增强用户的交互体验。

  • 支持自定义样式,可以自由设置图表、图例、坐标轴等组件的样式。

  • 具有非常方便的扩展性,可以通过自定义组件、渲染函数等方式扩展 recharts 的功能。

安装

在使用 recharts 前,需要先安装该库。recharts 的安装非常简单,只需要运行如下命令即可:

使用

安装完成后,我们就可以开始使用 recharts 进行数据可视化了。下面我们将介绍 recharts 的主要功能和使用方式。

图表

recharts 提供了多种类型的图表,包括折线图、柱状图、饼图、雷达图等等,可以根据需求选择合适的图表进行展示。下面我们将以柱状图为例,介绍如何使用 recharts 绘制图表。

首先,我们需要引入 recharts 的必要组件:

接下来,我们可以准备数据,并渲染图表:

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

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

在上面的代码中,我们创建了一个数据数组,并且将其作为 data 属性传入 BarChart 组件。然后,我们使用 XAxis 和 YAxis 组件定义了 X 坐标轴和 Y 坐标轴的标签和样式,使用 CartesianGrid 组件创建了网格线,使用 Tooltip 和 Legend 组件添加了交互和图例功能。最后,我们使用 Bar 组件添加了柱状图。

运行上面的代码,我们就可以看到一个简单的柱状图。

数据处理

recharts 支持多种数据格式和数据处理方式,可以根据需求灵活选择。

数组格式

当数据源为数组时,需要将数据的 key 和 value 映射到图表的坐标轴上。例如,我们可以使用如下代码渲染一个简单的折线图:

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

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

在上面的代码中,我们将数据源定义为一个包含月份和销售额的对象数组,然后使用 XAxis 和 YAxis 组件定义了 X 和 Y 坐标轴的标签和样式,使用 Line 组件创建了折线图。

对象格式

当数据源为对象时,需要使用 dataKey 属性将数据的 key 映射到图表的坐标轴上。例如,我们可以使用如下代码渲染一个简单的柱状图:

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

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

在上面的代码中,我们将数据源定义为一个包含月份和销售额的对象,然后使用 Object.entries 方法将其转换为数组格式,再将其作为 data 属性传递给 BarChart 组件。同时,我们使用 XAxis 组件指定了 month 作为数据的 key,使用 Bar 组件指定了 sales 作为数据的 value。

自定义数据处理

当数据处理需要进行自定义处理时,可以使用 data 参数传递一个函数,该函数会接收原始数据,返回格式化后的数据。例如,我们可以按月份将数据进行分组,然后渲染出一个堆叠柱状图:

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

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

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

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

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

在上面的代码中,我们定义了一个 formatData 函数,该函数会按月份将数据进行分组,计算出每个月的销售额和利润。然后,我们将格式化后的数据作为 data 属性传递给 BarChart 组件,使用 Bar 组件渲染出堆叠柱状图。

自定义组件

recharts 支持自定义组件,可以根据需求定制各种图表和交互元素。下面我们将介绍如何使用 recharts 自定义组件。

CustomLineChart 组件

我们可以创建一个 CustomLineChart 组件,该组件会渲染出一个折线图,并在该折线图上加入自定义的元素。例如,我们可以在折线图上添加两个圆形,表示某些关键数据的点位:

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

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

在上面的代码中,我们使用自定义的 Circle 组件添加了两个圆形元素,其 cx 和 cy 属性分别表示圆的中心点位,r 表示圆的半径,fill 表示圆的填充颜色。同时,我们使用 useTheme hook 来获取主题配置,以此来控制元素的颜色和大小。

CustomTooltip 组件

我们可以创建一个 CustomTooltip 组件,该组件会渲染出一个自定义的 tooltip 元素,可以控制 tooltip 的样式和内容。例如,我们可以创建如下的 CustomTooltip 组件:

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

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

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

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

在上面的代码中,我们根据 useTheme hook 获取主题配置,然后自定义了 tooltip 的样式和内容。在 CustomTooltip 组件中,我们使用 active 和 payload 属性控制 tooltip 的显示和内容,使用 label 属性表示其所属的坐标轴。

接下来,我们将 CustomTooltip 组件应用到我们的折线图上:

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

在上面的代码中,我们将 Tooltip 组件的 content 属性设置为我们自定义的 CustomTooltip 组件,这样就可以使用我们自定义的 tooltip 了。

数据处理

recharts 支持多种数据格式和数据处理方式,可以根据需求灵活选择。

数组格式

当数据源为数组时,需要将数据的 key 和 value 映射到图表的坐标轴上。例如,我们可以使用如下代码渲染一个简单的折线图:

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

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

在上面的代码中,我们将数据源定义为一个包含月份和销售额的对象数组,然后使用 XAxis 和 YAxis 组件定义了 X 和 Y 坐标轴的标签和样式,使用 Line 组件创建了折线图。

对象格式

当数据源为对象时,需要使用 dataKey 属性将数据的 key 映射到图表的坐标轴上。例如,我们可以使用如下代码渲染一个简单的柱状图:

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

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

在上面的代码中,我们将数据源定义为一个包含月份和销售额的对象,然后使用 Object.entries 方法将其转换为数组格式,再将其作为 data 属性传递给 BarChart 组件。同时,我们使用 XAxis 组件指定了 month 作为数据的 key,使用 Bar 组件指定了 sales 作为数据的 value。

自定义数据处理

当数据处理需要进行自定义处理时,可以使用 data 参数传递一个函数,该函数会接收原始数据,返回格式化后的数据。例如,我们可以按月份将数据进行分组,然后渲染出一个堆叠柱状图:

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

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

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

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

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

在上面的代码中,我们定义了一个 formatData 函数,该函数会按月份将数据进行分组,计算出每个月的销售额和利润。然后,我们将格式化后的数据作为 data 属性传递给 BarChart 组件,使用 Bar 组件渲染出堆叠柱状图。

总结

recharts 是一款非常强大的数据可视化库,其具有丰富的功能、灵活的数据格式和数据

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