前言 XI
第1章 写在前面 1
1.1 数据为什么要可视化 1
1.2 为什么要写代码 2
1.3 为什么要交互 2
1.4 为什么要在Web上 3
1.5 这是一本什么书 3
1.6 读者是谁 4
1.7 这不是什么书 4
1.8 使用示例代码 5
1.9 谢谢你 6
第2章 D3简介 7
2.1 D3能做什么 7
2.2 D3不能做什么 8
2.3 起源与背景 9
2.4 替代方案 10
2.4.1 简易图表 10
2.4.2 图谱可视化 12
2.4.3 地图映射 12
2.4.4 较原始的方案 13
2.4.5 三维图形 13
2.4.6 基于D3的工具 14
第3章 技术基础 15
3.1 Web(万维网) 15
3.2 HTML 17
3.2.1 内容和结构 18
3.2.2 通过元素来添加结构 19
3.2.3 常用元素 20
3.2.4 属性 22
3.2.5 类和ID 22
3.2.6 注释 23
3.3 DOM 23
3.4 开发者工具 24
3.5 渲染与盒模型 26
3.6 CSS 28
3.6.1 选择符 28
3.6.2 属性和值 30
3.6.3 注释 30
3.6.4 引用样式 30
3.6.5 继承、层叠和特指度 32
3.7 JavaScript 34
3.7.1 Hello, Console 34
3.7.2 变量 34
3.7.3 其他数据类型 35
3.7.3 数学运算符 39
3.7.4 比较运算符 39
3.7.5 控制结构 40
3.7.6 函数 42
3.7.7 注释 43
3.7.8 引用脚本文件 43
3.7.9 JavaScript陷阱 44
3.8 SVG 48
3.8.1 SVG元素 48
3.8.2 简单的图形 49
3.8.3 为SVG元素添加样式 51
3.8.4 分层与绘制顺序 53
3.8.5 透明度 54
3.9 关于兼容性 56
第4章 安装D3 59
4.1 下载D3 59
4.2 引用D3 60
4.3 配置Web服务器 61
4.3.1 基于Python的文本终端方案 61
4.3.2 MAMP、WAMP和LAMP 62
4.3.3 快开始吧 62
第5章 数据 63
5.1 生成页面元素 63
5.1.1 连缀方法 65
5.1.2 各个击破 66
5.1.3 平稳交接 66
5.1.4 不要连缀 67
5.2 绑定数据 67
5.2.1 怎么绑定 67
5.2.2 数据 68
5.2.3 作出你的选择 71
5.2.4 绑定及确定 72
5.3 使用自己的数据 75
5.3.1 自定义函数 75
5.3.2 数据需要拥抱 76
5.2.3 添加样式 77
第6章 基于数据绘图 79
6.1 绘制DIV 79
6.1.1 设定属性 80
6.1.2 关于类 81
6.1.3 言归正传 81
6.1.4 设定样式 82
6.2 data()的魔力 83
6.3 绘制SVG 86
6.3.1 创建SVG 87
6.3.2 数据驱动的图形 88
6.3.3 你好,色彩 90
6.4 绘制条形图 90
6.4.1 老方法生成的条形图 90
6.4.2 用新方法改进条形图 91
6.4.3 上色 96
6.4.4 加标签 98
6.5 绘制散点图 100
6.5.1 数据 100
6.5.2 散点图 101
6.5.3 散点大小 102
6.5.4 标签 103
6.6 更上一层楼 105
第7章 比例尺 107
7.1 苹果和像素 107
7.2 值域和范围 108
7.3 归一化 109
7.4 创建比例尺 109
7.5 缩放散点图 110
7.5.1 d3.min()和d3.max() 110
7.5.2 设置动态缩放 112
7.5.3 整合缩放后的值 112
7.6 修饰图表 113
7.7 其他方法 117
7.8 其他比例尺 117
第8章 数轴 119
8.1 数轴简介 119
8.2 设定数轴 120
8.3 修整数轴 121
8.4 优化刻度 124
8.5 垂直数轴 125
8.6 最后的润色 126
8.7 为刻度标签定义样式 128
第9章 更新、过渡和动画 129
9.1 更新条形图 129
9.1.1 序数比例尺 130
9.1.2 自动分档 132
9.1.3 使用序数比例尺 132
9.1.4 其他更新 133
9.2 更新数据 133
9.2.1 通过事件监听器实现交互 134
9.2.2 改变数据 135
9.2.3 更新视觉元素 135
9.3 过渡动画 138
9.3.1 持续时间 139
9.3.2 缓动函数 140
9.3.3 延迟时间 141
9.3.4 使用随机数据 143
9.3.5 更新比例尺 145
9.3.6 更新数轴 147
9.3.7 在过渡开始和结束时执行操作 149
9.4 其他数据更新方式 156
9.4.1 添加值(和元素) 156
9.4.2 删除值(和元素) 161
9.4.3 通过键联结数据 164
9.4.4 添加和删除组合拳 169
9.4.5 简要回顾 170
第10章 交互式图表 171
10.1 绑定事件监听器 171
10.2 什么是行为 172
10.3 分组SVG元素 177
10.4 提示条 182
10.4.1 浏览器默认提示条 182
10.4.2 SVG元素提示条 184
10.4.3 HTML的div提示条 185
10.5 适应触摸设备 188
10.6 更进一步 188
第11章 布局 189
11.1 饼图布局 190
11.2 堆叠布局 194
11.3 力导向布局 197
第12章 地图 203
12.1 JSON与GeoJSON 203
12.2 路径 205
12.3 投影 206
12.4 等值区域 208
12.5 添加定位点 212
12.6 取得和解析地图数据 215
12.6.1 查找shapefile文件 215
12.6.2 选择解析度 216
12.6.3 简化数据文件 217
12.6.4 转换为GeoJSON 218
第13章 导出文件 221
13.1 导出位图 221
13.2 导出PDF 222
13.3 导出SVG 223
附录A 扩展阅读 227
A.1 图书 228
A.2 网站 228
A.3 Twitter 229