简介
本文列举了ggplot2中大量几何对象和统计变换的一部分,并把它们按照用途进行了细分。
图层叠加的总体策略
总体来说,图层有三种用途:
- 用以展示数据本身。这一层不必多说,几乎在每一幅图形上都会出现。
- 用以展示数据的统计摘要。我们可以从数据摘要中进一步理解数据,同时对模型作出评价。本层通常绘制在数据层之上。
- 用以添加额外的元数据(metadata)、上下文信息和注解。元数据层展示了背景的上下文信息,也可以为原始数据赋予有现实意义的注解。
本文为《冒号课堂:编程范式与OOP思想》一书中第七课的思考与总结。
抽象贯穿于软件开发的三个最核心的阶段中,分别是分析(analysis)、设计(design)和实现(implementation)。
其中,分析阶段的主要任务是在理解问题领域(problem domain)和明确业务需求(business requirement)的基础上制定功能规范(functional specification),其对应的是OOA(Object-Oriented Analysis)。设计阶段的主要任务是在分析的基础上制定出实现规范(implementation specification),其对应的是OOD(Object-Oriented Design)。实现阶段则在设计的基础上完成软件编码,其对应的是OOP(Object-Oriented Programming)。
在这三个阶段中,抽象的程度是依次递减的。分析阶段多采用性质导向式抽象(property-oriented abstraction),通过对系统性质的逻辑描述来制定规范。所谓性质导向的,即关注“是什么”(what)的问题而不是“怎么样”(how)的问题,因此一般不在设计上作任何决定或限制。设计阶段则多采用模型导向式抽象(model-oriented abstraction),通过构造数学模型来满足系统的性质,从而实现功能规范。实现阶段就是具体到实际编程了,常用两种抽象机制:一种是参数抽象(abstraction by parameterization),一种是规范抽象(abstraction by specification)。
本文主要对ggplot2中图层、几何对象、统计变换和位置调整的工作方式作一些技术说明:如何对它们进行调用和自定义。
当我们调用qplot()时,它已经帮我们做了这样一个流程:创建一个图形对象,添加图层并且展示结果。但如果我们想手动创建图形对象,就要用到ggplot()函数。该函数主要有两个参数:数据和图形属性的映射。其余全部参数可查看R帮助文档。举例:数据为diamonds,x为carat,y为price,colour为cut。
p <- ggplot(diamonds, aes(carat, price, colour = cut))
上面的代码就是创建一个图形对象,在加上图层之前是无法显示图形的。从这行代码可以看出图形对象可以存储到一个变量里,这有个好处就是有利于代码避繁就简。在文章后面会展示这一优点。