太极剑法和ggplot

• 招无定式
• 潜力无穷
• 需要忘记
• 容易学习
ggplot2简介
• 由Hadley Wickham于2005年创建
• 于2012年四月进行了重大更 新,最新版本0.91
• 作者目前的工作是重写代码, 简化语法,方便用户开发和使用

ggplot2的基本概念
• 数据(Data)和映射(Mapping)
• 标度(Scale)
• 几何对象(Geometric) • 统计变换(Statistics)
•坐标系统(Coordinate)
• 图层(Layer) • 分面(Facet)
数据(Data)和映射(Mapping)
将数据中的变量映射到图形属性。映射控制了二者之间的关系。

标度(Scale)
标度负责控制映射后图形属性的显示方式。具体形式上来看是图例和坐标刻度。Scale和Mapping是紧密相关的概念。

几何对象(Geometric)
几何对象代表我们在图中实际看到的图形元素,如点、线、多边形等。

统计变换(statistics)
对原始数据进行某种计算,例如对二元散点图加上一条回归线。

坐标系统(Coordinate)
坐标系统控制坐标轴幵影响所有图形元素,坐标轴可以进行变换以满足不同的需要

图层(Layer)
数据、映射、几何对象、统计变换等构成一个图层。图层可以允许用户一步步的构建图形,方便单独对图层进行修改。

分面(Facet)
条件绘图,将数据按某种方式分组,然后分别绘图。分面就是控制分组绘图的方法和排列形式。

示例数据
> str(mpg)
'data.frame': 234 obs. of 14 variables:
$ manufacturer: Factor w/ 15 levels "audi","chevrolet",..:
$ model: Factor w/ 38 levels "4runner 4wd",..:
$displ :num 1.81.8222.82.83.11.81.82...
$ year: int 1999 1999 2008 2008 1999 1999 2008 1999
$ cyl: int 4 4 4 4 6 6 6 4 4 4 ...
$ trans: Factor w/ 10 levels "auto(av)","auto(l3)",..:
$ drv: Factor w/ 3 levels "4","f","r":
$ cty: int 18 21 20 21 16 18 18 18 16 20 ...
$ hwy: int 29 29 31 30 26 26 27 26 25 28 ...
$ fl: Factor w/ 5 levels "c" "d","e","p",...
$ class: Factor w/ 7 levels"2seater","compact", ...
例如:
> library(ggplot2)
> p <- ggplot(data=mpg, mapping=aes(x=cty, y=hwy))
> p + geom_point()

将颜色映射到颜色属性
> p <- ggplot(mpg,aes(x=cty, y=hwy, colour=factor(year)))
> p + geom_point()

增加平滑曲线:
> p + geom_point() + stat_smooth()

>p <- ggplot(mpg, aes(x=cty,y=hwy))
p+geom_point(aes(colour=ftor(year)))+stat_smooth()

两种等价的绘图方式
第一种:
> p <- ggplot(mpg, aes(x=cty,y=hwy))
p+geom_point(aes(colour=factor(year)))+stat_smooth()
第二种:
> d <- ggplot() +geom_point(data=mpg, aes(x=cty, y=hwy, colour=factor(year)))+
stat_smooth(data=mpg, aes(x=cty, y=hwy))
> print(d)
用标度来修改颜色取值
> p + geom_point(aes(colour=factor(year)))+ stat_smooth()+scale_color_man-
al(values =c('blue','red'))

将排量映射到散点大小
> p + geom_point(aes(colour=factor(year),size=displ))+ stat_smooth()+scale_co
or_manual(values =c('blue2','red4'))

>p + geom_point(aes(colour=factor(year),size=displ), alpha=0.5,position = "jitter") + stat_smooth()+scale_color_manual(values =c('blue2','red4'))+ scale_size_continuous(range = c(4, 10))

用坐标控制图形显示的范围

利用facet分别显示不同年份的数据
>p + geom_point(aes(colour=class, size=displ), alpha=0.5, position = "jitter")+ stat_smooth()+scale_size_continuous(range = c(4, 10))+ facet_wrap(~ year, ncol=1)

增加图名幵精细修改图例
> p <- ggplot(mpg, aes(x=cty, y=hwy))
> p+geom_point(aes(colour=class,size=displ),alpha=0.5,position = "jitter")+ stat_smooth()+ scale_size_continuous(range = c(4, 10))+ facet_wrap(~ year,ncol=1)+
opts(title='汽车油耗与型号')+ labs(y='每加仑高速公路行驶距离',
x='每加仑城市公路行驶距离')+ guides(size=guide_legend(title='排量'),colour = guide_legend(title='车型', override.aes=list(size=5)))
