人工智能和大数据是当今时代的两个鲜明的技术特征,而数据可视化一直是伴随着这两大技术领域的热门研究方向,促进了众多智能化应用的发展。
本书系统性讲解了数据可视化技术的原理和实现方法,并给出一些简单实用的案例。全书共10章,其中第1至8章以VTK数据可视化平台为基础,利用Python编程语言,系统性地讲解了数据可视化的原理和实现,包括绪论、可视化的图形基础、可视化原理与过程、可视化数据表示、可视化算法设计、可视化建模技术、图像处理技术、体可视化;第9、10两章侧重于利用Matplolib工具实现数据可视化,用于绘制统计图表、时间序列数据等一些功能。各章均附有一定量的习题,方便读者掌握相关知识。本书为浙江省省级新形态教材,配有丰富的教学资源,可通过扫描二维码获取。
本书可作为高等院校相关专业的教材,也可作为大数据和数据可视化领域应用开发人员及编程爱好者的参考材料。
人工智能和大数据是当今时代的两个鲜明的技术特征,而数据可视化一直是伴随着这两大技术领域的热门研究方向,促进了众多智能化应用的发展。我国先后发布了《新一代人工智能发展规划》和《大数据产业发展规划》,鲜明地提出要加快研发新一代数据可视化软件产品,鼓励高校探索培养大数据和数据可视化领域专业型人才和跨界复合型人才机制。数据可视化技术是一项应用性强、实用且有效的技术,在各行各业的人工智能和大数据发展中均占据非常重要的位置,属于相关专业能力培养的重要元素和社会迫切需要的职业技能。在新的时期,教育部确定了以智能制造、云计算、人工智能、机器人等新兴产业用于改造传统工科专业,为开展数据可视化的教学任务吹响了前进的号角。
本书全方位地讲解了数据可视化的核心技术原理和算法设计理念,结合VTK数据可视化平台和Python编程语言给出了数据可视化技术具体的实现,提供了对应的习题,在实践部分单独给出了若干Python数据可视化编程工具介绍,有助于学习者得到完善而系统化的训练。本书的编写符合国家对于新时期人工智能与大数据人才培养的期冀以及高等院校新工科应用型人才培养的理念。
本书共分10章,主要内容如下:第1章绪论;第2章可视化的图形基础;第3章可视化原理与过程;第4章可视化数据表示;第5章可视化算法设计;第6章可视化建模技术;第7章图像处理技术;第8章体可视化;第9章Matplotlib可视化;第10章Matplotlib高级功能。
本书主要有以下几个特点:
(1) 对数据可视化知识进行了全面的讲解。
书中介绍了可视化的图形基础、可视化原理与过程以及可视化数据表示、算法设计、建模技术等内容,还对数据可视化相关的图形处理技术以及体可视化技术进行了探讨。
(2) 以深入浅出的方式进行知识讲解,让学生轻松上手学习。
本书的编写突出理论精华并以理论与实际结合为导向,书中给出的公式、算法以少而精为原则,让非数学专业以及仅具有普通数学基础的学生也能够理解和把握相关知识。
(3) 实现了理论与实践的结合,强调对学生动手能力的培养。
全书分为数据可视化原理和数据可视化编程训练两部分。其中原理部分在系统性讲解数据可视化理论脉络的同时,也给出理论问题的编程实现;而实践部分则从可视化实用编程的角度,提供了若干通俗易懂的常用可视化编程实现案例。全书通过例题、练习、实验、测试等诸多方面对学生进行全方位的训练,做到了理论与实践相结合,也方便老师结合课时和课程特点进行教学内容的差异化选取。
(4) 案例和练习均采用通用编程方法设计,具有广泛的适用性。
本书的案例均采用Python程序或网页代码等通用编程方法编写,书中的案例实现以开源软件平台和工具为基石,不但适合作为高等院校相关专业的教材,也适合作为广大工程技术人员开发数据可视化产品的参考材料。
采用本书作为教材时,具体教学安排可参考如下建议:
(1) 本书作为计算机、数据工程、信息技术、电子、自动化、人工智能、大数据等相关专业本科或研究生数据可视化相关课程的教材时,建议采用48或64学时,可结合专业特点及学时具体安排。
(2) 本书作为专科院校或职业技术学院的教材时,建议采用64学时,可结合专业特点及学时安排讲授本书的全部章节,或选讲部分实践性强又容易理解的章节。
(3) 本书作为数据可视化培训用书时,建议培训时间为7~12天,可结合培训学时安排讲授本书的全部章节,或结合培训目标选择相关理论部分和实践部分的章节。
本书配备多媒体教学资料,相关例题和一些必要资料可以直接通过扫描书中二维码查询。为方便教学,本书提供全套教学课件、例题的源代码、例题和课后题中涉及的所有数据文件、参考教学大纲、学时分配表以及试题样卷等资料,可向西安电子科技大学出版社索取,或在出版社官网(http://www.xduph.com)自行查询。本书也开放了课后习题的参考答案,有需要的老师请直接联系西安电子科技大学出版社获取。
本书被认定为新工科应用型人才培养电子信息类系列教材和浙江省普通高校“十三五”新形态教材,其中第1~8章由林勇编写、第9~10章由陆星家编写,全书由林勇审核、统稿、定稿,书中程序代码的运行情况可在对应二维码的视频资源中得以验证。本书编写过程中还得到了宁波工程学院、宁波大学、浙江大学、清华长三角研究院等院校师生和西安电子科技大学出版社、清华大学出版社等单位的鼎力支持和帮助,在此表示衷心的感谢。特别感谢尹天鹤、滕宇、张昱雯、高志远、韩明、梁方楚、刘凤秋、陈志荣等老师的支持和参与。由于编者水平有限,书中难免有错漏之处,恳请广大读者不吝指出并提出宝贵意见与建议,我们将在今后再版时修订完善。
作 者
2022年1月10日
第一部分 数据可视化原理
第1章 绪论 2
1.1 概念与意义 2
1.1.1 数据可视化的概念 2
1.1.2 数据可视化的意义和作用 2
1.2 历史与演进 5
1.2.1 抽象图形表示 5
1.2.2 科学可视化的发展 7
1.2.3 统计图表的爆发 8
1.2.4 数据与艺术的有机结合 9
1.2.5 交互可视化、信息可视化与可视化
分析 11
1.3 视觉与认知 12
1.3.1 视觉感知 12
1.3.2 视觉认知 13
1.4 数据可视化与知识发现的关系 17
1.4.1 数据科学的发展 17
1.4.2 知识发现与数据可视化的结合 18
本章小结 19
习题 19
第2章 可视化的图形基础 21
2.1 图形渲染 21
2.1.1 概念 21
2.1.2 方式 21
2.1.3 应用示例 22
2.2 颜色与光照 23
2.2.1 颜色 23
2.2.2 光照 25
2.3 视角 26
2.3.1 虚拟相机 26
2.3.2 坐标系 28
2.3.3 坐标变换 29
2.4 透明度与色彩合成 31
本章小结 33
习题 33
第3章 可视化原理与过程 34
3.1 可视化场景 34
3.1.1 建模方法 34
3.1.2 场景与演员 35
3.1.3 图形硬件 35
3.2 可视化模型 37
3.2.1 数据源 37
3.2.2 数据滤波 37
3.2.3 可视化处理 39
3.3 可视化管线 42
3.3.1 可视化管线概念 42
3.3.2 管线视图 43
3.3.3 通过管线选取滤波器 45
本章小结 46
习题 46
第4章 可视化数据表示 47
4.1 可视化数据表征 47
4.1.1 模型与数据 47
4.1.2 采样与插值 49
4.1.3 数据的结构特征 51
4.2 可视化图元 54
4.2.1 数据集 54
4.2.2 图元模型 57
4.2.3 全局坐标与局部坐标 61
4.3 数据集分类 63
4.3.1 数据集建模 64
4.3.2 结构化坐标 68
4.3.3 图元镶嵌 71
本章小结 74
习题 74
第5章 可视化算法设计 75
5.1 标量可视化 75
5.1.1 颜色对照 75
5.1.2 轮廓表示 78
5.1.3 标量生成 90
5.2 向量可视化 93
5.2.1 有向图 93
5.2.2 向量场 96
5.2.3 流体运动 103
5.3 张量可视化 106
5.3.1 流线形张量 106
5.3.2 线形张量 110
5.3.3 椭球形张量 114
本章小结 116
习题 116
第6章 可视化建模技术 118
6.1 隐函数方法 119
6.1.1 隐函数轮廓 119
6.1.2 二项式隐函数 122
6.1.3 隐函数组合成像 124
6.2 算法模型 130
6.2.1 隐式建模 130
6.2.2 模底凸生 133
6.2.3 图符表示 136
6.3 数据选取 138
6.3.1 数据提取 138
6.3.2 图形剪切 144
6.3.3 图元选取 148
本章小结 152
习题 152
第7章 图像处理技术 154
7.1 图像数据表示 154
7.1.1 纹理贴图 155
7.1.2 图像生成 160
7.1.3 图像合成 164
7.2 图像平滑处理 165
7.2.1 图像修复 165
7.2.2 图像噪声 167
7.2.3 非线性平滑 170
7.3 图像频谱分析 171
7.3.1 图像亚采样 171
7.3.2 图像衰减 174
7.3.3 图像频域变换 176
本章小结 181
习题 182
第8章 体可视化 183
8.1 通过表面绘制形体 183
8.1.1 平面扭曲 183
8.1.2 表面光滑 186
8.1.3 三角条带化 189
8.2 形体绘制中点集的运用 191
8.2.1 密集点云绘制 191
8.2.2 点集喷绘 193
8.2.3 表面数据抽取与形体压缩 194
8.3 绘制体数据 196
8.3.1 体数据的绘制 196
8.3.2 图像序体绘制 198
8.3.3 对象序体绘制 200
本章小结 201
习题 201
第二部分 数据可视化编程训练
第9章 Matplotlib可视化 204
9.1 Matplotlib基础 204
9.1.1 Numpy基础功能 204
9.1.2 Numpy高级功能 207
9.1.3 Matplotlib结构 209
9.2 Matplotlib常见图表 210
9.2.1 基础图形 210
9.2.2 高级绘图 221
9.2.3 图形的完善 227
9.3 3D图形和多子图 232
9.3.1 基础3D图形 233
9.3.2 高级3D图形 237
9.3.3 多子图 241
本章小结 243
习题 243
第10章 Matplotlib高级功能 245
10.1 时间序列数据 245
10.1.1 时间序列数据的特点 245
10.1.2 时间序列处理模块 246
10.1.3 时间序列数据可视化方法 248
10.2 自定义功能和动画 252
10.2.1 自定义绘图 252
10.2.2 自定义动画 253
10.2.3 坐标系变换 255
10.3 图像处理 256
10.3.1 显示图像 256
10.3.2 灰度变换和图像轮廓提取 258
10.3.3 直方图和直方图均衡 259
本章小结 261
习题 261
参考文献 263