第9章 井然有序 [1]
在本章中我们将涉及如下内容:
◆ 创建饼图
◆ 创建堆叠面积图
◆ 创建矩形式树状结构图
◆ 创建树
◆ 创建封闭图
9.1 简介
本章将着眼于布局——这个我们先前从未涉及的概念。D3提供了一系列布局算法以排列多个元素,但是在深入介绍这些内容之前,我们首先要明确一些和布局相关的非常重要的属性。
◆ 布局是一种数据:它以数据为中心,并由数据驱动,不能生成任何图形或产生任何输出。这使得它可以在不同环境下甚至是没有图形输出的环境下复用,例如SVG 或canvas。
◆ 抽象性和复用性:布局是抽象的,因此,它具有较高的灵活性和复用性。你可以使用各种不同的方法来组合或者复用布局。
◆ 布局之间是不同的:每个布局都是不一样的,每一个D3提供的布局都着眼于一个非常明确的图形需求,并有其相应的数据结构。
◆ 无状态性:为了简化使用,布局是无状态的。这里的无状态指的是,一般情况下布局就像函数一样,可以被调用很多次。对于不同的输入数据将产生不同的布局结果。
D3中的布局是一个有趣并且强大的概念。在本章,我们将创建全功能的可视化效果,并将布局应用其上,借此来探索一些D3中最常见的布局的使用方法。
9.2 创建饼图
饼图,或者称之为圆形图,是一个包含多个扇形的圆,扇形大小用以表示各部分所占比例。本例中,我们将使用 D3 的圆形布局(pie layout)和其他特性创建一个全功能的饼图。在第 7 章的时候我们已经看到使用D3 的圆弧生成器是非常枯燥的。每一个生成器都需要以下的数据格式。
var data=[
{startAngle: 0, endAngle: 0.6283185307179586},
{startAngle: 0.6283185307179586, endAngle: ...
Get D3.js数据可视化实战手册 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.