前言
本书主要介绍如何使用Python中的matplotlib、Seaborn、plotnine、Basemap等包绘制专业图表。本书首先介绍Python语言编程基础知识,以及NumPy和Pandas的数据操作方法;再对比介绍matplotlib、Seaborn和plotnine的图形语法。本书系统性地介绍了使用matplotlib、Seaborn和plotnine绘制类别对比型、数据关系型、时间序列型、整体局部型、地理空间型等常见的二维和三维图表的方法。另外,本书也介绍了商业图表与学术图表的规范与差异,以及如何使用matplotlib绘制HTML交互页面动画。
本书定位
人生苦短,我用Python!
现在Python语言越来越流行,尤其是在机器视觉、机器学习与深度学习等领域。但是数据可视化一直是其短板,特别是相对R语言而言。R语言以ggplot2包及其拓展包人性化的绘图语法大受用户的喜爱,特别是生物信息与医学研究者。市面上有两本很经典的R ggplot2教程:ggplot2 Elegant Graphics for Data Analysis和R Graphics Cookbook,这两本书重点介绍了ggplot2包的绘图语法及常见图表的绘制方法。另外,《R语言数据可视化之美:专业图表绘制指南(增强版)》基于R中的ggplot2包及其拓展包等,系统性地介绍了几乎所有常见的二维和三维图表的绘制方法。
所以,笔者认为很有必要系统性地介绍Python的绘图语法系统,包括最基础也最常用的matplotlib、常用于统计分析的Seaborn、最新出现的类似R ggplot2语法的plotnine包,以及用于地理空间数据可视化的Basemap包。本书首先介绍数据可视化基础理论,然后系统性地介绍了几乎所有常见的二维和三维图表的绘制方法,包括简单的柱形图系列、条形图系列、折线图系列、地图系列等。
读者对象
本书适合想学习数据分析与可视化相关专业课程的高校学生,以及对数据分析与可视化感兴趣的职场人士阅读,尤其是Python用户。从软件掌握程度而言,本书同样适用于零基础学习Python的用户。
阅读指南
全书内容共有11章,其中,前3章是后面8章的基础,第4~10章都是独立知识点,第11章是数据可视化绘图综合案例。读者可以根据实际需求有选择性地进行学习。
第1章 介绍Python编程基础,重点介绍数据结构、控制语句与函数编写。
第2章 介绍Python数据处理基础,重点介绍NumPy和Pandas的数据操作方法,包括NumPy的数值运算与Pandas的表格运算。
第3章 介绍Python数据可视化基础,重点对比介绍了matplotlib、Seaborn和plotnine的图形语法,以及数据可视化的颜色主题运用原理。
第4章 介绍类别比较型图表,包括柱形图系列、条形图系列、南丁格尔玫瑰图、径向柱图等图表。
第5章 介绍数据关系型图表,包括二维和三维散点图、气泡图、等高线图、三维曲面图、三元相图、二维和三维瀑布图、相关系数热力图等图表。
第6章 介绍数据分布型图表,包括一维、二维和三维的统计直方图和核密度估计图、抖动散点图、点阵图、箱形图、小提琴图等图表。
第7章 介绍时间序列型图表,包括折线图和面积图系列、日历图、量化波形图等图表。
第8章 介绍局部整体型图表,包括饼状图、马赛克图、华夫饼图、点状柱形图系列等图表。
第9章 介绍高维数据的可视化方法,包括分面图系列、矩阵散点图、热力图、平行坐标系图、RadViz图等图表。
第10章 介绍地理空间型图表,包括分级统计地图、点描法地图、带气泡/柱形的地图、等位地图、线型地图、三维柱形地图等不同的地图图表。
第11章 介绍数据可视化的各种应用场景,包括商业图表、学术图表、HTML网页动画等的规范与制作。
应用范围
本书的图表绘制方法都是基于Python的matplotlib、Seaborn、plotnine、Basemap等包实现的,几乎适应于所有常见的二维和三维图表。本书以虚拟的地图数据为例讲解不同的地理空间型图表,读者需将绘图方法应用到实际的地理空间型图表。
适用版本
本书所用Python版本为:3.7.1;图表绘制包matplotlib、Seaborn、plotnine、Basemap和GeoPandas的版本分别为:3.0.2、0.9.0、0.5.1、1.2.0和0.4.1;数据处理包NumPy和Pandas的版本分别为:1.15.4和0.23.4。
Python作为免费的开源软件,数据分析与可视化的包更新迭代很快,这是它的优势。但是有时候有些代码运行可能会由于Python及其包的版本的更新,而出现函数弃用(deprecated)的情况。此时,需要自己更新代码,使用新的函数替代原有的函数。
源代码
本书配有几乎所有图表的Python源文件及其CSV或TXT格式的数据源文件。但是需要注意的是,如果运行的Python版本没有安装相应的数据分析与可视化的包(package),那么请预先安装相应的包,才能成功运行代码。同时,也请注意运行Python及其包的版本是否已经更新。本书配套源代码下载的GitHub网址:https://github.com/Easy-Shu/Beautiful-Visualization-with-python。
与作者联系
因笔者知识与能力所限,书中纰漏之处在所难免,欢迎并恳请读者朋友们给予批评与指正,可以通过邮箱联系笔者。如果读者有关于学术图表或商业图表绘制的问题,可以与笔者交流。另外,更多关于图表绘制的教程请关注笔者的博客、专栏和微博平台,也可以重点关注微信公众号:EasyShu,还可以添加笔者微信:EasyCharts。笔者的数据分析与可视化的文章会优先发表在微信公众号平台。
邮箱:easycharts@qq.com
博客:https://github.com/Easy-Shu/EasyShu-WeChat
知乎专栏:https://zhuanlan.zhihu.com/EasyShu(知乎账号:张杰)
致谢
自从2019年10月出版《R语言数据可视化之美:专业图表绘制指南(增强版)》,很多读者问笔者能不能出一本Python版的数据可视化教程。写书真的呕心沥血,但是在撰写过程中能系统地总结所学的知识,可以查漏补缺,也是受益匪浅。《R语言数据可视化之美:专业图表绘制指南》这本书在2017年5月断断续续写了1年半多,到2019年5月才出版。后来又花了3个多月增加了3章图表内容,增强版才出版。
所谓“大道相通”,不同软件的数据可视化原理都是相通的。《Python数据可视化之美:专业图表绘制指南》这本书就是对照着R语言那本书“翻译”而成的。所以亲爱的读者请不必诧异于笔者现在这么快又出版Python的数据可视化图书了。
在这里,首先要感谢读者,感谢你们对笔者的支持与包容。也非常感谢笔者的大学好友金伟(现为腾讯高级研究员)引导笔者入门Python,还要感谢香港理工大学的姚鹏鹏博士、清华大学的赵建树博士笔者在学习Python时给予的帮助。最后,笔者觉得还应该感谢的就是自己。蓦然回首,4年弹指一挥间,从大学毕业到香港做学术研究这几年,经历过很多次的失望,也差点患上抑郁症,感谢自己有一颗积极、阳光、乐观的心,终于守得云开见月明,如笔者所愿能坚持做自己喜欢的事情。
小时候,读到课本里普希金的一段话:“假如生活欺骗了你,不要悲伤,不要心急!忧郁的日子里须要镇静:相信吧,快乐的日子将会来临。”到现在才明白这确实是一条生活的“潜规则”。月有阴晴圆缺,人有悲欢离合。人不仅有趋利避害、喜甜厌苦的本能反应,还有趋欢避悲、求乐脱苦的本能调节。所以,悲伤的日子后面就是快乐的日子。
亲爱的读者,也希望你能快乐地阅读本书!
作者
2019年12月5日