ggplot2 slide

肖凯 @xccds

2013-03-30

为什么使用ggplot2

  • 创造性绘图更容易
  • 采用图层的设计方式,有利于结构化思维
  • 图形美观,同时避免繁琐细节

1、数据和映射

  • 首先我们需要可视化的数据对象(Data)
  • 以及数据变量到图形属性之间的映射(Mapping)

1、数据和映射

# cty映射到X轴,hwy映射到Y轴
p <- ggplot(data=mpg,mapping=aes(x=cty,y=hwy))
p + geom_point()

2、几何对象

  • 需要定义用什么样的图形元素来表现数据
  • geom代表实际看到的点、线、多边形。
summary(p + geom_point())
## data: manufacturer, model, displ, year, cyl, trans, drv, cty, hwy,
## fl, class [234x11]
## mapping: x = cty, y = hwy
## faceting: facet_null()
## -----------------------------------
## geom_point: na.rm = FALSE
## stat_identity:
## position_identity: (width = NULL, height = NULL)

2、几何对象Geom

# 变量映射为颜色属性
p <- ggplot(data=mpg,mapping=aes(x=cty,y=hwy,colour=factor(year)))
p + geom_point()

3、统计变换Stat

统计变换是对原始数据进行了某种提炼或归纳

p <- ggplot(data=mpg,mapping=aes(x=cty,y=hwy,colour=factor(year)))
p + stat_smooth()

4、图层Layer

可以将上面的散点和平滑线合并起来

p <- ggplot(data=mpg,mapping=aes(x=cty,y=hwy))
p + geom_point(aes(colour=factor(year)))+
stat_smooth()

4、图层Layer

下面的命令和之前的是等价的。

p <- ggplot()
d <- p + geom_point(data=mpg, mapping=aes(x=cty,y=hwy,colour=factor(year))) +stat_smooth(data=mpg, mapping=aes(x=cty,y=hwy))
print(d)

5、标度Scale

  • 映射只负责将变量关联到某个图形属性
  • 标度来控制具体的取值
p <- ggplot(data=mpg,mapping=aes(x=cty,y=hwy))
p + geom_point(aes(colour=factor(year)))+
scale_color_manual(values =c('blue2','red4'))+stat_smooth()

6、分面Facet

Facet就是将数据按某种方式分组后分别绘图

p <- ggplot(data=mpg,mapping=aes(x=cty,y=hwy))
p + geom_point(aes(colour=factor(year)))+
scale_color_manual(values =c('blue2','red4'))+
stat_smooth()+facet_wrap(~ year,ncol=1)