为何ggplot2

  • ggplot2是由Hadley
    Wickham
    在ggplot基础上重新写成的一个画图包;
  • gg为Grammar of Graphics的缩写,ggplot即为图形语法作图。ggplot2的创作思想来源于The Grammar of Graphics这本书;
  • 相比基础做图而言,ggplot的代码更为简洁,定制化程度高,很多图形不用做太多的修改,对于分类变量的展示也更为方便。

重要概念

  • Data
  • Mapping
  • aes
  • layer
  • geom
  • stat
  • position
  • Coordinate
  • facet

开始ggplot2

1
install.packages('ggplot2')
  • 示例数据
1
2
3
4
5
6
7
##       carat       cut color clarity depth table price    x    y    z
## 16601 1.01 Very Good D SI1 62.1 59 6630 6.37 6.41 3.97
## 13899 0.90 Ideal D SI1 62.4 55 5656 6.15 6.19 3.85
## 29792 0.30 Ideal D SI1 61.6 56 709 4.34 4.30 2.66
## 3042 0.30 Very Good G VS1 62.0 60 565 4.27 4.31 2.66
## 25272 2.06 Premium I SI2 61.0 61 13912 8.18 8.10 5.02
## 26093 1.56 Very Good G VVS1 59.7 59 15334 7.48 7.57 4.49
  • 作图类型
1
2
3
4
5
6
7
8
9
library(ggplot2)
#geom_point 点状图
p1<-ggplot(dt,aes(carat,price))+geom_point()
#geom_boxplot 盒形图
p2<-ggplot(dt,aes(color,carat))+geom_boxplot()
#geom_histogram 频率直方图
p3<-ggplot(dt,aes(carat))+geom_histogram(colour='white',fill='steelblue')
#geom_density 密度曲线图
p4<-ggplot(dt,aes(carat,colour=color))+geom_density()+theme(legend.position='none')

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#geom_bar 柱形图
p5<-ggplot(dt,aes(color,carat,fill=cut))+
geom_bar(stat='identity',position='dodge')+
theme(legend.position='none')
#geom_smooth 平滑曲线
p6<-ggplot(dt,aes(carat,price))+geom_smooth()
#geom_line 线图
p7<-ggplot(dt,aes(carat,price))+geom_line(alpha=.5,colour='red')
##geom_line 标签
p8<-ggplot(mtcars,aes(mpg,cyl))+geom_text(aes(label=cyl,color=factor(cyl)))+
theme(legend.position='none')
#p8<-ggplot(dt,aes(color,carat,fill=cut))+
# geom_bar(stat='identity',position='dodge')+
# theme(legend.position='none')+
# geom_text(aes(label=carat))
#geom_jitter 不太知道怎么用,扰动图?
#ggplot(diamonds,aes(carat,price))+geom_jitter()

1
2
3
4
5
6
7
8
9
10
11
#绘制饼图,个人感觉不如pie方便
p1<-ggplot(ToothGrowth,aes('',len,fill=supp))+geom_bar(stat='identity',width = 1)+
coord_polar('y',start=0)+
theme(legend.position='none')
#绘制地图
library(ggthemes)
world <- map_data("world")
world <- world[world$region != "Antarctica",]
p2<-ggplot()+
geom_map(data=world, map=world,aes(x=long, y=lat, map_id=region),color="white", fill="gray30", size=.3, alpha=1/4)+
theme_map()

  • 其他

ggplot2使用多种图层的组合可以创造出新的图形,这个可以自己尝试

  • 参考资料

R Graphics Cookbook
ggplot2图形分析与艺术
http://www.xueqing.tv/cms/article/95
http://blog.csdn.net/bone_ace/article/details/47455363