第一章 简介
一张统计图形就是数据到几何对象的图形属性的一个映射。其中,几何对象(geometric object,缩写为geom)包括点、线、条形等;图形属性(aesthetic attributes,缩写为aes)包括颜色、形状、大小等。
此外,图形中还可能包含数据的统计变化(statistical transformation,缩写为stats),最后绘制在某个特定的坐标系(coordinate system,缩写为coord)中,而分面(facet,将绘图窗口划分为若干个子窗口)则可以用来生成数据不同子集的图形。一张统计图形就是由上述这些独立的图形部件所组成的。
数据 Data
映射 mapping:将数据中的变量对应到图形属性。
几何对象 geom:代表我们在图中实际看到的图形元素,如点、线、多边形等。
统计变换 stats:对数据进行的某种汇总。
标度 scale:将数据的取值映射到图形空间,例如用颜色、大小或形状来表示不同的数值,展现标度的常见做法是绘制图例和坐标轴——实际上是从图形到数据的映射,读者可以从图形中读取原始的数据。
坐标系 coord:描述数据如何映射到图形所在的平面,同时提供看图需要的坐标轴和网格线,例如笛卡尔坐标系、极坐标和地图投影。
分面 facet:描述如何将数据分解为各个子集,以及如何对子集作图并联合进行展示,也称为条件作图或网格作图。
第二章 从qplot开始入门
(一)基本用法
qplot(x, y = NULL, ..., data)
x, y Aesthetics passed into each layer
data Data frame to use (optional). If notspecified, will create one, extracting vectors from the current environment.
X和y分别代表图形的x坐标和y坐标,qplot支持将变量的函数作为参数x和y,data参数如果进行了指定,qplot会首先在该数据框内查找变量名,然后再在R的工作空间中进行搜索。
library(ggplot2)
diamonds[1:5,]
qplot(carat,price,data=diamonds)
qplot(log(carat),log(price),data=diamonds)
(二)添加颜色、大小、形状和其他图形属性
1、颜色、大小和形状是图形属性的具体例子,它们都是影响数据如何进行展示的视觉属性,每一个图形属性都对应了一个称为标度的函数,其作用是将数据的取值映射到该图形属性的有效值,在ggplot2中,标度控制了点以及对应的图例的外观。
set.seed(1410) #让样本可重复
dsmall<-diamonds[sample(nrow(diamonds),100),]#从diamonds数据集中产生容量为100的随机样本
qplot(carat,price,data=dsmall,colour=color,shape=cut)#颜色和形状标度将钻石的颜色和形状映射为对应图形的颜色和形状
2、使用I()手动设置图形属性
qplot(carat,price,data=dsmall,colour=I("red"),size=I(2))
qplot(carat,price,data=dsmall,colour=I("blue"),size=I(4))
3、使用alpha图形属性设置颜色的不透明度,其取值从0(完全透明)变动到1(完全不透明),透明度可以用分数来表示,例如1/10,1/20。
qplot(carat,price,data=diamonds,alpha=I(1/10))
qplot(carat,price,data=diamonds,alpha=I(1/100))
qplot(carat,price,data=diamonds,alpha=I(1/200))
透明度分母表示经过多少次重叠后颜色将变得不透明,上例将alpha值从1/10变动到1/100再到1/200,可以看出大部分点在哪里进行重叠。
(三)几何对象
几何对象描述了应该用何种对象来对数据进行展示,其中有些几何对象关联了相应的统计变换,通过改变几何对象几乎可以画出任何一种类型的图形。
适用于考察二维变量关系的几何对象:
1、geom="point":散点图,当指定x和y参数给qplot()时默认的设置;
2、geom="smooth":拟合一条平滑曲线,并将曲线和标准误展示在图中,如果不想绘制标准误,可以使用se=FALSE;利用method参数可以选择不同的平滑器。
qplot(carat,price,data=dsmall,geom=c("point","smooth"))
qplot(carat,price,data=diamonds,geom=c("point","smooth"))
注:上例中利用c()函数将多个几何对象组成一个向量传递给geom,几何对象会按照指定的顺序进行堆叠。
3、geom="boxplot":箱线胡须图,用以概括一系列点的分布情况;
4、geom="path"和geom="line":在数据点之间绘制连线(线条图和路径图);
适用一维分布的几何对象:
连续变量:geom="histogram"绘制直方图,geom="freqpoly"绘制频率多边形,geom="density"绘制密度曲线,如果只有x参数传递给qplot,则直方图为默认选择。
离散变量:geom="bar"绘制条形图。