前言
本书主要介绍如何使用R中的ggplot2包及其拓展包,以及ggraph、circlize和plot3D等包绘制专业图表。本书先介绍了R语言编程基础知识,以及使用dplyr、tidyr、reshape2等包的数据操作方法;再对比了base、lattice和ggplot2等包的图形语法。本书系统性地介绍了使用ggplot2包及其拓展包绘制类别对比型、数据关系型、时间序列型、整体局部型、地理空间型等常见的二维图表的方法,ggraph、 igraph、circlize等包绘制层次、网络关系型图表,以及使用plot3D包绘制三维图表(包括三维散点图、柱形图和曲面图等)的方法。另外,本书也介绍了论文中学术图表的图表配色、规范格式等相关技能与知识。
本书定位
虽然现在Python语言越来越流行,尤其是在机器学习与深度学习等领域,但是R语言在数据分析与可视化方面仍然具有绝对的优势,其中ggplot2包及其拓展包人性化的绘图语法大受用户的喜爱,特别是生物信息与医学研究者。Nature、Science和Cell等期刊上大量的图表都是使用R语言绘制的,所以很有必要系统性地介绍R语言的绘图方法。
R ggplot2有两本很经典的教程:ggplot2 Elegant Graphics for Data Analysis和R Graphics Cookbook,两本书重点介绍了ggplot2包的绘图语法及常见图表的绘制方法,但是其中介绍的图表种类并不多。所以本书基于R中的ggplot2包及其拓展包和plot3D包,系统性地介绍了几乎所有常见的二维和三维图表的绘制方法,包括简单的柱形图系列、条形图系列、折线图系列,以及复杂的和弦图、矩形树状图、日历图等。
读者对象
本书适用于想学习数据分析与可视化相关专业课程的高校学生,以及对数据分析与可视化感兴趣的职场人士阅读,尤其是R语言用户。从软件掌握程度而言,本书同样适用于零基础学习R语言的用户。
阅读指南
全书内容共有12章,其中,第1章和第2章是后面9章的基础,第3~11章都是独立章节,可以根据实际需求有选择性地进行学习。
第1章 介绍R语言编程与数据可视化基础,对比了base、lattice和ggplot2包的图形语法,重点介绍了ggplot2包的图形语法;
第2章 介绍R语言数据处理基础,重点介绍了使用dplyr、tidyr、reshape2等包的数据操作方法;
第3章 介绍类别比较型图表,包括柱形图系列、条形图系列、南丁格尔玫瑰图、径向柱图等约30张图表;
第4章 介绍数据关系型图表,包括二维和三维散点图、气泡图、等高线图、三维曲面图、三元相图、二维和三维瀑布图、相关系数热力图等约60张图表;
第5章 介绍数据分布型图表,包括一维、二维和三维的统计直方图和核密度估计图、抖动散点图、点阵图、箱形图、小提琴图等约50张图表;
第6章 介绍时间序列型图表,包括折线图和面积图系列、日历图、螺旋图系列、量化波形图、地平线图等约20张图表;
第7章 介绍局部整体型图表,包括饼图、散点复合饼图系列、马赛克图、华夫饼图等约20张图表;
第8章 介绍高维数据的可视化方法,包括分面图系列、矩阵散点图、热力图、平行坐标系图、RadViz图、图标法等约20张图表;
第9章 介绍层次关系型图表,包括节点链接图、旭日图、矩形树状图、树形图、桑基图等约10多张图表;
第10章 介绍网络关系型图表,包括节点链接图、弧线链接图、蜂巢网络图、和弦图等约10多张图表;
第11章 介绍地理空间型图表,包括从世界到国家、再到地方局部的地图,还有分级统计地图,点描法地图,带气泡、柱形、饼图、连接线的地图,等位地图、线型地图等30多张不同的地图图表。
第12章 介绍论文中学术图表的常用技能,包括常见的截图与图片处理软件及其功能、矢量图片的修改、论文中学术图表数据的提取与重绘、论文中学术图表的规范与调整等。
应用范围
本书的图表绘制方法都是基于R中的ggplot2包及其拓展包和其他绘图包实现的,几乎适应于所有常见的二维和三维图表。本书以虚拟地图的数据为例讲解不同的地理空间型图表,读者需将绘图方法应用到实际的地理空间型图表。
适用版本
本书所用R版本为:3.3.3。R作为免费的开源软件,数据分析与可视化的包更新迭代很快,这是它的优势。但是有时候有些代码运行可能会由于R或者R包版本的更新,而出现函数弃用(deprecated)的情况。此时,需要自己更新代码,使用新的函数替代原有的函数。
源代码
本书配有几乎所有图表的R语言源文件及其.csv或.txt格式的数据源文件。但是需要注意的是,如果运行的R语言版本没有安装相应的数据分析与可视化的包(package),那么请预先安装相应的包,才能成功运行代码。同时,也请注意运行R语言和R包的版本是否已经更新。源代码下载Github网址:https://github.com/EasyChart/Beautiful-Visualization-with-R。
与我联系
因本人知识与能力所限,书中纰漏之处在所难免,欢迎并恳请读者朋友们给予批评与指正,可以通过邮箱联系笔者;如果读者有关于R语言学术图表或商业图表绘制的问题,可以与笔者交流。另外,更多关于R语言图表绘制的教程请关注笔者的博客、专栏和微博平台。也可以重点关注我们的微信公众号:EasyCharts,还可以添加笔者微信:EasyCharts。笔者的R语言数据分析与可视化的文章会优先发表在微信公众号平台。
邮箱:easycharts@qq.com
知乎专栏:https://zhuanlan.zhihu.com/EasyCharts-R(知乎账号:EasyCharts)
博客:http://easychart.github.io/
新浪微博:https://weibo.com/easycharts?source=blog&is_all=1(微博账号:EasyCharts)
致谢
桃李春风一杯酒,江湖夜雨十年灯。笔者的处女作《Excel数据之美:科学图表与商业图表的绘制》也至今出版逾两年,一直想着要修订这本书。但是旧书未翻新,新书忙于码字改稿,实在是有愧于读者。其实,在撰写这本新书的时候,数次想放弃。写书实在是一件费力劳神的事情,笔者是凭借着对数据可视化的热爱才坚持至今。
这本书从2017年5月25日开始动笔,断断续续居然也花费了两年的时间。与其说是花费,不如说是陪伴吧。笔者经常对朋友开玩笑说,心情不好的时候码码代码、画画图表,是一件消磨时间、放松心情的事情。
在断断续续的写稿中,笔者也认识了很多热爱数据分析与可视化的朋友,甚是荣幸,也得益于他们的帮助。很感谢《R语言游戏数据分析与挖掘》的作者谢佳标老师和先锋信息科技有限公司CEO林祯舜老师对笔者的鼓励与帮助,也因此有幸参加了2018年的R语言大会;也非常感谢在码字、写代码时一起交流学习的李誉辉(四川大学高分子学院)、杜雨(美团用户平台—大数据与算法部—商业分组部)、刘钰(河南大学土木建筑学院)、厚缊(深圳中观经济咨询有限公司)等诸多技术大佬。因为有你们的帮助,所以才有今天这本书。
最后,想对大家说,也是对自己说:且将新火试新茶,诗酒趁年华!
增强版特别说明
随心而动,立志而行。现在的生活纷纷扰扰,可以做自己喜欢的事情实属难得。笔者的《R语言数据可视化之美:专业图表绘制指南》于2019年5月出版,没想到如此受大家喜爱,有些读者都买了好几本。实在惭愧,由于《地图管理条例》的相关规定,涉及地图的内容都需要严格审查才能出版,所以笔者不得不删减了呕心沥血撰写的关于地理空间型图表的章节,然而很多读者其实特别关注这个部分。
笔者后来想到一个迂回曲折的办法,自己虚拟了几个国家和城市的信息数据,使用虚拟地图的方式讲解各种地理空间型图表,这样才使得相关内容顺利出版。另外,笔者顺便把读者反映的层次关系型和网络关系型图表也逐一添加进增强版中。到目前为止,常见的图表类型基本都已经被囊括书中。
R包的更新迭代很快,也层出不穷。在此,非常感谢辛勤的开发者们。小时候学到一句话:学如逆水行舟,不进则退。R包的更新与创新,也促使大家要不断地学习,才能跟上新的技术。所以,也希望大家不断学习、不断进步。
再次感谢杜雨、李誉辉、刘钰、厚缊等诸多技术大佬。因为有你们的帮助,所以才有今天这本书。最后,想再次对大家说,也是对自己说:学如逆水行舟,不进则退。
作者
2019年9月2日