第9章 井然有序

本章涵盖以下内容:

  • 创建饼图
  • 创建堆叠式面积图
  • 创建矩形式树状结构图
  • 创建树
  • 创建封闭图

本章将着眼于布局——这是我们先前从未涉及的概念。D3提供了一系列布局算法以排列多个元素,但是在深入介绍这些内容之前,首先要明确一些与布局相关的重要属性。

  • 布局是一种数据:它以数据为中心,并由数据驱动,但不能直接生成任何图形或产生任何输出。这使得它可以在不同环境下甚至是没有图形输出的环境下复用,例如SVG或canvas。
  • 抽象性和复用性:布局是抽象的,因此,它具有较高的灵活性和复用性。我们可以使用各种不同的方法来组合或者复用布局。
  • 布局之间是不同的:每个布局都是不一样的,每一个D3提供的布局都着眼于一个非常明确的图形需求,并有其相应的数据结构。
  • 无状态性:为了简化使用,布局是无状态的。这里的无状态指的是,一般情况下布局就像函数一样,可以调用很多次。它对于不同的输入数据将产生不同的布局结果。

D3中的布局是一个有趣并且强大的概念。在本章中,我们将创建全功能的可视化效果并将布局应用其上,借此来探索一些D3中最常见的布局的使用方法。

饼图,或者称为圆形图,是一个包含多个扇形的圆,扇形大小用以表示各部分所占比例。本例中,我们将使用D3的圆形布局(pie layout)和其他特性创建一个全功能的饼图。在第7章已经看到使用D3的圆弧生成器是非常枯燥的。每一个生成器都需要以下的数据格式:

var data = [  {startAngle: 0, endAngle: 0.6283185307179586},  {startAngle: 0.6283185307179586, endAngle: 1.2566370614359172},  ...  {startAngle: ...

Get D3 4.x数据可视化实战手册(第2版) now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.