D3.js 教程: 使用 JavaScript 创建可交互的柱状图

阅读时长 4 分钟读完

D3.js 是一个强大的 JavaScript 库,可以帮助我们创建各种各样的数据可视化。在这篇教程中,我们将会使用 D3.js 来创建一个可以交互的柱状图。本文假定读者已经有 JavaScript 编程基础和一些 HTML/CSS 知识。

准备工作

为了开始本教程,你需要在你的项目中引入 D3.js 库。你可以通过以下方式引入:

生成数据

在本教程中,我们将会创建一个简单的柱状图来展示每个月份的收益。首先,我们需要生成一些数据。在这里,我们将使用随机数来模拟每个月份的收益。你可以根据你的项目需求修改数据源。

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

创建 SVG 元素

我们需要创建一个 SVG 元素来容纳我们的柱状图。在这里,我们将使用 D3.js 的 select 函数来选择一个 DOM 元素,并使用 append 函数来创建 SVG 元素。

创建比例尺

我们需要将数据映射到可视化空间中。为此,我们需要创建一个比例尺。在这里,我们将使用 D3.js 的 scaleLinear 函数来创建线性比例尺,以将收入映射到垂直轴上。

创建柱状图

现在我们已经准备好创建柱状图。在这里,我们将使用 D3.js 的 selectAll 函数来选择所有未创建的矩形元素,并使用 data 函数将数据与元素绑定。然后,我们使用 enter 函数来创建新矩形元素,并使用 attr 函数设置其属性。

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

添加轴

最后,我们需要添加轴。在这里,我们将使用 D3.js 的 axisBottomaxisLeft 函数来创建 x 轴和 y 轴,并使用 call 函数将它们添加到 SVG 元素中。

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

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

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

- ----------------------------------------------------------- --------
----------------------------------------------------------------------------------
纠错
反馈