Concepts

优质
小牛编辑
140浏览
2023-12-01

D3.js是一个开源JavaScript库,用于 -

  • 文档对象模型(DOM)的数据驱动操作。
  • 使用数据和形状。
  • 为线性,分层,网络和地理数据布置视觉元素。
  • 在用户界面(UI)状态之间启用平滑过渡。
  • 实现有效的用户交互。

网络标准

在我们开始使用D3.js创建可视化之前,我们需要熟悉Web标准。 以下Web标准在D3.js中大量使用。

  • 超文本标记语言(HTML)
  • 文档对象模型(DOM)
  • 层叠样式表(CSS)
  • 可缩放矢量图形(SVG)
  • JavaScript

让我们逐一详细介绍这些Web标准。

HyperText Markup Language (HTML)

我们知道,HTML用于构建网页的内容。 它存储在扩展名为“.html”的文本文件中。

Example - 典型的简单HTML示例如下所示

<!DOCTYPE html>
<html lang = "en">
   <head>
      <meta charset = "UTF-8">
      <title></title>
   </head>
   <body>
   </body>
</html>

Document Object Model (DOM)

当浏览器加载HTML页面时,它将转换为层次结构。 HTML中的每个标记都转换为DOM中具有父子层次结构的元素/对象。 它使我们的HTML更具逻辑结构。 一旦形成DOM,就可以更容易地操作(添加/修改/删除)页面上的元素。

让我们使用以下HTML文档来理解DOM -

<!DOCTYPE html>
<html lang = "en">
   <head>
      <title>My Document</title>
   </head>
   <body>
      <div>
         <h1>Greeting</h1>
         <p>Hello World!</p>
      </div>
   </body>
</html>

上述HTML文档的文档对象模型如下,

文档对象模型

Cascading Style Sheets (CSS)

虽然HTML为网页提供了一种结构,但CSS样式使网页更加令人愉悦。 CSS是一种Style Sheet Language用于描述用HTML或XML编写的文档的表示(包括SVG或XHTML等XML方言)。 CSS描述了如何在网页上呈现元素。

Scalable Vector Graphics (SVG)

SVG是一种在网页上呈现图像的方法。 SVG不是直接图像,而只是使用文本创建图像的一种方式。 顾名思义,它是一个Scalable Vector 。 它会根据浏览器的大小进行缩放,因此调整浏览器大小不会使图像失真。 除IE 8及更低版本外,所有浏览器均支持SVG。 数据可视化是可视化表示,使用SVG使用D3.js渲染可视化很方便。

将SVG视为画布,我们可以在其上绘制不同的形状。 首先,让我们创建一个SVG标记 -

<svg width = "500" height = "500"></<svg>

SVG的默认测量值是像素,因此我们不需要指定单位是否为像素。 现在,如果我们想绘制一个矩形,我们可以使用下面的代码绘制它 -

<svg width = "500" height = "500">
   <rect x = "0" y = "0" width = "300" height = "200"></rect>
</svg>

我们可以在SVG中绘制其他形状,如 - 直线,圆,椭圆,文本和路径。

就像样式化HTML元素一样,样式化SVG元素很简单。 我们将矩形的背景颜色设置为黄色。 为此,我们需要添加一个属性“fill”并将值指定为黄色,如下所示 -

<svg width = "500" height = "500">
   <rect x = "0" y = "0" width = "300" height = "200" fill = "yellow"></rect>
</svg>

JavaScript

JavaScript是一种松散类型的客户端脚本语言,可在用户的浏览器中执行。 JavaScript与HTML元素(DOM元素)交互,以使Web用户界面具有交互性。 JavaScript实现了ECMAScript Standards ,其中包括基于ECMA-262规范的核心功能以及不基于ECMAScript标准的其他功能。 JavaScript知识是D3.js的先决条件。

最后更新:

类似资料

  • 视图移动以及缩放是一种将用户注意力聚焦在感兴趣区域的一种流行的交互技术。操作直接,容易理解: 点击并拖拽平移,使用滚轮进行缩放,当然也可以通过触摸进行。平移和缩放被广泛的应用在地图中,但是也可被应用到其他的可视化比如时间序列以及散点图中。 缩放行为通过 d3-zoom 模块实现,能方便且灵活到 selections 上。它处理了许多 Installing NPM 安装: npm install d

  • 这个模块实现了用来计算一组二维点 Voronoi diagram(泰森多边形) 或 Delaunay triangulation(德劳内三角剖分) 的 Steven J. Fortune’s algorithm 算法。这个模块的实现大多是基于 Raymond Hill 的工作。 泰森多边形不仅仅在视觉上具有吸引力,在交互方面也非常实用,比如在散点图中增加点的目标面积。参考 “Strikeouts

  • transition 是一个类 selection 的接口,用来对 DOM 进行动画修改。这种修改不是立即修改,而是在规定的事件内平滑过渡到目标状态。 应用过渡,首先要选中元素,然后调用 selection.transition,并且设置期望的改变,例如: d3.select("body") .transition() .style("background-color", "red")

  • 这个模块提供了一个高效的队列,能管理上千并发动画同时保证与并发或分段动画一致的同步时序。在内部使用 requestAnimationFrame 进行 fluid animation(如果支持的话),否则切换使用 setTimeout来实现。 Installing NPM 安装: npm install d3-timer. 此外还可以下载 latest release。也可以直接从 d3js.org

  • 在可视化时间序列数据、分析时间模式或处理一般时间时,常规时间单位的不规则性很快就变得明显起来。在 Gregorian calendar(公历) 中,大多数月份有 31 天但是有些月份只有 28 或者 29、30 天。大多数年份有 365 天但是 leap years(闰年) 有 366 天。在 daylight saving(夏令时) 中一天可能有 23 25 小时。更复杂的是世界各地的夏时制不同

  • 可视化通常由离散图形标记组成, 比如 symbols, arcs, lines 和 areas。虽然条形的矩形可以很容易的使用 SVG 或者 Canvas 来生成, 但是其他的比如圆形的扇形以及向心 Catmull-Rom 样条曲线就很复杂。这个模块提供了许多图形生成器以便使用。 与 D3 的其他特性一样,这些图形也是又数据驱动的: 每个图形生成器都暴露了一个如何将数据映射到可视化表现的访问器。例