内容简介
《ggplot2:数据分析与图形艺术》介绍的ggplot2是R中新颖的数据可视化包,功能强大、灵活便捷,其灵感源自Leland Wilkison的《图形的语法》一书。使用ggplot2可以轻松实现:
高质量图形的绘制,自动化添加图例。
叠加来自不同数据源的多个图层(点、线、地图.瓦片图、箱线图等),自适应通用标度。
利用R强大的建模功能添加平滑曲线,如loess、线性模型、广义可加模型和稳健回归。
保存任意ggplot2图形,方便修改或重复使用。
制作主题,满足内部定制或杂志风格的需求,便捷地应用到多幅图形上。
从视觉角度上审视你的图形,斟酌每一部分数据如何呈现在图形上。
如果你想将枯燥的数据转化为生动,形象的图片,《ggplot2:数据分析与图形艺术》绝对大有裨益。你需要了解R的基本知识(比如如何将数据导入到R),不过ggplot2是专门为绘图量身打造的“迷你语言”,在《ggplot2:数据分析与图形艺术》中你就可以学到你需要的所有知识。在阅读完《ggplot2:数据分析与图形艺术》之后,你就可以针对你的问题绘制出精确定制的图形,并且发现将脑海中的图片绘制在屏幕上已经变得轻而易举了。
作者简介
Hadley Wickham,RStudio首席科学家,美国莱斯大学统计学助理教授,毕业于爱荷华州立大学统计系。Hadley是R社区活跃的人之一,代码风格独树一帜,致力于开发用于数据处理、分析、成像的工具,截至2012年已经开发了超过30个高质量的R软件包,比如ggplot2,lubridate,plyr,reshape2,stringr,httr等。
内页插图
前言/序言
每当我们看到一个新的软件,第一反应会是:为什么又要发明一个新软件?ggplot2是R世界里相对还比较年轻的一个包,在它之前,官方R已经有自己的基础图形系统(graphics包)和网格图形系统(grid包),并且Deepayan Sarkar也开发了lattice包,看起来R的世界对图形的支持已经足够强大了。那么我们不禁要问,为什么还要发明一套新的系统?设计理念
打个比方,想想我们小时候怎样学中文的。最开始的时候我们要识字,不认识字就没法阅读和写作,但我们并不是一直按照一个个汉字学习的,而是通过句子和具体的场景故事学习的。为什么不在小学时背六年字典呢?那样可能认识所有的汉字。原因很简单,光有单字,我们不会说话,也无法阅读和写作。我们缺的是什么?答案是对文字的组织能力,或者说语法。
R的基础图形系统基本上是一个“纸笔模型”,即:一块画布摆在面前,你可以在这里画几个点,在那里画几条线,指哪儿画哪儿。后来lattice包的出现稍微改善了这种情况,你可以说,我要画散点图或直方图,并且按照某个分类变量给图中的元素上色,此时数据才在画图中扮演了一定的中心角色,我们不用去想具体这个点要用什么颜色(颜色会根据变量自动生成)。然而,lattice继承了R语言的一个糟糕特征,就是参数设置铺天盖地,足以让人窒息,光是一份xyplot()函数的帮助文档,恐怕就够我们消磨一天时间了,更重要的是,lattice仍然面向特定的统计图形,像基础图形系统一样,有直方图、箱线图、条形图等等,它没有一套可以让数据分析者说话的语法。
那么数据分析者是怎样说话的呢?他们从来不会说这条线用#FE09BE颜色,那个点用三角形状,他们只会说,把图中的线用数据中的职业类型变量上色,或图中点的形状对应性别变量。有时候他们画了一幅散点图,但马上他们发现这幅图太拥挤,最好是能具体看一下里面不同收入阶层的特征,所以他们会说,把这幅图拆成七幅小图,每幅图对应一个收入阶层。然后发现散点图的趋势不明显,最好加上回归直线,看看回归模型反映的趋势是什么,或者发现图中离群点太多,最好做一下对数变换,减少大数值对图形的主导性。
从始至终,数据分析者都在数据层面上思考问题,而不是拿着水彩笔和调色板在那里一笔一划作图,而计算机程序员则倾向于画点画线。LelandWilkinson的著作在理论上改善了这种状况,他提出了一套图形语法,让我们在考虑如何构建一幅图形的时候不再陷在具体的图形元素里面,而是把图形拆分为一些互相独立并且可以自由组合的成分。这套语法提出来之后他自己也做了一套软件,但显然这套软件没有被广泛采用;幸运的是,Hadley Wickham在R语言中把这套想法巧妙地实现了。
为了说明这种语法的思想,我们考虑图形中的一个成分:坐标系。常见的坐标系有两种:笛卡尔坐标系和极坐标系。在语法中,它们属于一个成分,可自由拆卸替换;笛卡尔坐标系下的条形图实际上可以对应极坐标系下的饼图,因为条形图的高可以对应饼图的角度,本质上没什么区别。因此在ggplot2中,从一幅条形图过渡到饼图,只需要加极少量的代码,把坐标系换一下就可以了。如果我们用纸笔模型,则可以想象,这完全是不同的两幅图,一幅图里面要画的是矩形,另一幅图要画扇形。
更多的细节在本书中会介绍,这里我们只是简略说明用语法画图对用纸笔画图来说在思维上的优越性;前者是说话,后者是说字。
探索数据的灵魂:可视化与分析的交响 在信息爆炸的时代,如何从海量的数据中提炼出有价值的见解,并以清晰、直观的方式呈现给他人,已成为一项至关重要的技能。本书并非聚焦于某个特定软件或工具的操作指南,而是深入探讨数据分析与可视化这一更为普适且深刻的领域。我们将一同踏上一段探索数据内在规律、赋予其生命力的旅程,让枯燥的数字跃然纸上,讲述引人入胜的故事。 第一篇:看见数据——可视化之美 数据可视化并非简单的图表堆砌,它是一门艺术,也是一门科学。成功的可视化能够洞察隐藏的模式、揭示意想不到的关联,甚至激发新的思考。在本篇中,我们将超越表面的图形元素,深入探究可视化的核心原则与哲学。 数据的本质与可视化前的思考: 在着手绘制任何图表之前,最关键的步骤是理解你的数据。我们将讨论如何审视数据的结构、类型(定量、定性)、分布以及变量之间的关系。这一阶段的深入思考,将直接决定后续可视化方案的有效性。我们会探讨如何根据研究问题和目标受众来确定最适合的可视化类型,是选择散点图来展示两个变量的关系,还是柱状图来比较不同类别的值,亦或是折线图来追踪时间序列的变化?每一个选择都蕴含着对数据特征的精准把握。 图表设计的黄金法则: 优秀的可视化作品,其背后有着精心设计的考量。我们将剖析那些能够让图表脱颖而出的设计原则。这包括如何有效利用颜色、形状、大小等视觉元素来传达信息,如何避免信息过载和视觉干扰,如何构建清晰的坐标轴和图例,以及如何确保信息传达的准确性和无歧义性。我们会深入讨论“少即是多”的原则,以及如何通过简洁而有力的设计来增强数据的可读性。例如,选择与数据含义相符的调色板,而非仅仅是随机的色彩组合;合理设置刻度,避免误导性的视觉压缩或拉伸;使用清晰的标签和标题,让读者一眼就能理解图表所要表达的核心信息。 不同类型数据的可视化策略: 不同的数据类型需要不同的可视化方法。我们将系统地介绍适用于各种数据场景的图表类型及其应用。 定量数据: 探索连续型数据(如身高、温度)的分布和关系。我们会讨论直方图、箱线图、密度图、散点图等,以及如何使用它们来识别异常值、偏态分布和相关性。 定性数据: 分析分类数据(如性别、城市)的构成和比较。我们将介绍柱状图、饼图、堆积柱状图、树状图等,并探讨如何有效展示比例、频率和层级结构。 多变量数据: 如何在一个图表中同时展示多个变量的影响?我们会探讨气泡图、热力图、平行坐标图等,以及如何通过巧妙的设计来捕捉变量间的复杂交互。 时间序列数据: 观察数据随时间的变化趋势。折线图是经典的选择,但我们也会探讨更高级的技巧,如季节性分解、移动平均线等,来揭示时间序列数据的深层模式。 叙事性可视化: 数据分析的最终目的往往是沟通和说服。本部分将引导你如何将数据转化为引人入胜的故事。我们将学习如何构建一个清晰的叙事逻辑,将一系列图表有机地串联起来,引导读者逐步理解数据背后的洞察。这包括如何选择关键的图表来支持你的论点,如何撰写富有洞察力的标题和注释,以及如何根据受众的背景知识来调整你的表达方式。我们还将探讨如何利用数据可视化来支持决策、论证观点,甚至激发公众的讨论。 第二篇:洞察数据——分析的深度 可视化是看见数据的窗口,而数据分析则是深入挖掘数据内在价值的过程。本篇将带你穿越数据的迷雾,运用系统性的方法来理解、解释和提取有意义的信息。 理解你的数据:探索性数据分析(EDA)的基石: 在正式建模之前,充分了解你的数据是至关重要的。我们将强调探索性数据分析(EDA)的重要性,它是一个迭代的过程,通过统计摘要、可视化以及变量之间的关系探索,来初步理解数据的特征、潜在问题和模式。我们会学习如何计算均值、中位数、方差等基本统计量,如何检测缺失值和异常值,以及如何识别变量之间的相关性。EDA的过程就像是一位侦探,通过收集和分析线索,逐步拼凑出案件的全貌。 从描述到推断:统计学思维的实践: 数据分析离不开统计学。我们将回顾并实践一些核心的统计学概念,帮助你理解数据的随机性和不确定性。这包括概率分布、假设检验、置信区间等。我们将学习如何根据研究目的选择合适的统计检验方法,如何解读统计检验的结果,以及如何避免常见的统计误区。例如,理解p值的含义,区分相关性和因果关系,以及如何在有限的样本数据上进行合理的推断。 识别模式与趋势: 数据中蕴含着各种模式和趋势,从周期性波动到长期增长,从聚集效应到离散分布。我们将学习如何运用统计方法和可视化技术来识别和量化这些模式。这可能涉及到时间序列分析中的趋势分解,聚类分析中的群体识别,或者回归分析中的关系建模。我们将关注如何区分随机噪声和真实的信号,以及如何利用识别出的模式来做出预测或解释现象。 探索变量之间的关系: 现实世界中的现象往往是多变量相互作用的结果。本部分将深入探讨如何研究变量之间的关联。我们将介绍相关性分析,了解 Pearson 相关系数、Spearman 等不同度量方式的含义和适用场景。更进一步,我们将探讨回归分析,学习如何构建模型来预测一个变量如何受到其他变量的影响,以及如何解释模型的系数和拟合优度。这包括线性回归、逻辑回归等基本模型,以及如何评估模型的性能。 分组与比较: 当我们需要比较不同群体或条件下的数据时,统计检验成为强大的工具。我们将学习如何设计实验或观察性研究,并运用t检验、ANOVA(方差分析)等方法来判断不同组别之间是否存在显著差异。我们会关注研究设计的严谨性,以及如何正确解释统计检验的结果,避免得出错误的结论。 第三篇:连接分析与可视化——实现有意义的沟通 数据分析的最终价值在于其能够被理解和应用。本篇将聚焦于如何将分析结果有效地转化为清晰、有说服力的可视化,从而实现信息的无缝沟通。 从分析洞察到可视化表达: 分析阶段的发现并非孤立存在,它们需要通过可视化来得以具象化和传播。我们将学习如何根据分析得出的关键结论,选择最能支持这些结论的可视化形式。例如,如果分析发现两个变量之间存在强烈的线性关系,那么散点图和回归线将是理想的选择。如果分析揭示了不同组别的显著差异,那么误差棒或箱线图将非常有效。 强调关键信息,弱化干扰: 一次成功的可视化能够引导读者的注意力到最重要的信息上。我们将探讨如何通过视觉层次、对比和留白来突出核心发现,同时最小化不必要的细节,避免信息过载。这可能涉及到对图表的简化、对重要数据点的强调(例如,用特殊的颜色或标记),以及对复杂图表的分解。 交互式可视化的力量: 在数字时代,交互式可视化正变得越来越重要。它允许用户主动探索数据,发现他们自己的洞察。我们将探讨如何设计和实现简单的交互功能,如工具提示(tooltip)、联动筛选(linked brushing)和缩放(zooming),让观众能够更深入地与数据互动,获得更丰富的体验。 数据驱动的叙事构建: 再次强调,数据可视化是讲故事的有力工具。我们将学习如何将一系列经过分析和可视化的发现,按照逻辑顺序组织起来,形成一个引人入胜的数据故事。这包括确定故事的起点、发展和高潮,以及如何用图表和文字来推动故事情节。一个好的数据故事不仅能传递信息,更能激发情感、引发思考,甚至促成行动。 评估与迭代: 数据的生命周期并非在一次可视化后就结束。本部分将引导读者思考如何评估可视化和分析的有效性,并进行必要的迭代。我们会讨论如何从反馈中学习,如何根据新的数据或新的问题来改进现有的分析和可视化方案。数据分析与可视化是一个持续优化的过程,通过不断的反思和调整,才能让我们的工作更加精准和富有影响力。 总结 本书并非一本教你如何熟练使用特定软件的速成指南,而是致力于培养你一种用数据思考、用可视化表达、用分析说话的能力。我们相信,掌握了这些核心的理念和方法,你将能够更自信、更有效地驾驭数据,从中发掘出深层的智慧,并以令人信服的方式与世界分享。无论你是一名初学者,还是希望提升数据素养的专业人士,这本书都将是你旅途中的一位得力伙伴,引领你领略数据分析与可视化艺术的无限魅力。