如何使用ggplot2?
ggplot2的核心理念是将绘图与数据分离,数据相关的绘图与数据无关的绘图分离。ggplot2是按图层作图ggplot2保有命令式作图的调整函数,使其更具灵活性ggplot2将常见的统计变换融入到了绘图中。ggplot2的逻辑。ggplot2的逻辑在我看来其实是真正实现了一个图层叠加的概念:一句语句代表一张图,然后再有最小的单元图层。这个与其他命令式的绘图完全不同,来做个比较:#这是基于graphic包里例子x <- rnorm(100,14,5)y <- x + rnorm(100,0,1)plot(x,y)text(13,20, expression(x[1] == x[2]))我们可以看到这种绘图方式实际上是按命令添加的,以plot开始,可以以任何方式结束,每加上一个元素,实际上都是以一句单独的命令来实现的。这样做的缺点就是,其实不符合人对于画图的一般认识。其次,就是,我们没有一个停止绘图的标志,这使得有时候再处理的时候就会产生一些困惑。优势其实也有,在做参数修改的时候,我们往往可以很方便地直接用一句单独的命令修改,譬如对于x轴的调整,觉得不满意就可以写命令直接调整。而ggplot2则意味着要重新作图。再来看ggplot2的代码:x <- rnorm(100,14,5) y <- x + rnorm(100,0,1) ggplot(data= NULL, aes(x = x, y = y)) + #开始绘图geom_point(color = "darkred") + #添加点annotate("text",x =13 , y = 20,parse = T,label = "x[1] == x[2]") #添加注释我们可以发现,ggplot的绘图有以下几个特点:第一,有明确的起始(以ggplot函数开始)与终止(一句语句一幅图);其二,图层之间的叠加是靠“+”号实现的,越后面其图层越高。其次就是对于分组数据的处理,其实这方面,lattice已经做得很好了,不过我会在后面更仔细地叙述ggplot2是怎么看分组数据的绘图的。
ggplot2基于Leland Wilkinson在Grammar of Graphics(图形的语法)中提出的理论,取首字母缩写再加上plot,于是得名ggplot。按照《图形的语法》一书中的观点,一张统计图形就是从数据到点、线或方块等几何对象的颜色、形状或大小等图形属性的一个映射,其中还可能包含对数据进行统计变换(如求均值或方差),最后将这个映射绘制在一定的坐标系中就得到了我们需要的图形。图中可能还有分面,就是生成关于数据的不同子集的图形。使用ggplot2绘图的过程就是选择合适的几何对象、图形属性和统计变换来充分暴露数据中所含有的信息的过程。ggplot2需要一定的时间去入门学习,但是当你掌握了ggplot2中图形的语法的时候,我相信你会感受到这套语法的优雅。
语法直观认识一个图形对象就是一个包含数据,映射,图层,标度,坐标和分面的列表,外加组件options。每一个元素都是一个对象,可通过重载的‘+’叠加。这个特点的神奇之处,在于我们可以非常方便的逐步调整和修饰我们的图形。以上的命令生成了示例中的散点图。其中,每一个“+”前面的部分都是独立的。也就是说我们可以把变量保存以待下次载入时继续修改或者让你的同事来修改、使用。分面和图层将原数据切割称多个小数据集,即每个图层的每个分面面板都含有一个小数据集。你可以把它想象成一个三维矩阵:分面面板形成了一个2维网格,图层在第三维的方向上叠加。分面这个概念使得分组对比图的绘制非常方便。