ggplot笔记002——qplot()函数

     qplot()函数     

一年前就听说过ggplot,很多人都说ggplot强大,ggplot无所不能,从今天开始就让我们一起来见证一下这个神奇的R包。

首先要加载ggplot2:

1 if(!suppressWarnings(require('ggplot2'))){
2   install.packages('ggplot2')
3   require('ggplot2')
4 }

先简单介绍一下diamonds数据集,diamonds数据集包含了约54000颗钻石的价格和质量信息。有

克拉重量(carat),切工(cut),颜色(color),净度(clarity)——反应钻石质量的四个'C'

深度(depth),钻面宽度(table),x , y, z——五个物理指标

但这个数据集没有经过很好的整理,在展示钻石一些有趣的关系时,会显示出一些质量问题。所以同时使用另一个数据集dsmall:它是一个容量为100的随机样本。

1 set.seed(1410)#让样本可重复
2 dsmall<-diamonds[sample(nrow(diamonds),100),]
3 dsmall[1:5,]

 (一)qplot(quick plot)语法:

qplot(x, y = NULL, ..., data, facets = NULL, 
      margins = FALSE,geom = "auto", stat = list(NULL),
      position = list(NULL), xlim = c(NA,NA), ylim = c(NA, NA), log = "", main = NULL,
      xlab = deparse(substitute(x)),
      ylab = deparse(substitute(y)), asp = NA)
注解:
x,y: 分别表示横坐标的值和纵坐标的值,比如书上直接用carat代表的x,price代表的y
... 为每个图层指定其他图形装饰属性,如颜色(colour)、形状(shape)、大小(size)等。
书上的colour=color,shape=cut,alpha=I(1/10)等
data: 数据集,比如书上用的data=diamonds
facets:图形/数据的分面,按数据进行分类,每一类做成一个图形,效果一页多图,默认一个图形
margins: 是否显示图形的边缘,默认不显示
geom: 图形的几何类型,如
geom='point'绘制散点图.设置了x和y时,默认为散点图
geom='smooth'将拟合一条平滑曲线(基于loess,gam,lm,rlm),图形展示了曲线和标准误(不想会标准误,se=FALSE)
geom='boxplot'可以绘制箱线胡须图,概括点的分布情况 x为属性变量,y为连续变量
geom='path'geom='line'绘制线条图
geom='histogram'绘制直方图,若有x参数时,默认为直方图
geom='freqploy'绘制频率多边形
geom='density'绘制密度图
geom='bar'绘制条形图
stat: 将数据统计与图形结合 (stat-statistic简写)
position: 调整图形位置
xlim与ylim: 指定x轴和y轴的范围
log: 横纵坐标对数转换
main: 添加标题
xlab与ylab: 添加x轴和y轴标签
(二)例子
钻石重量(carat)与价格(price)的散点图
钻石重量(carat)与体积(x*y*z)的散点图
钻石重量的对数【log(carat)】与价格的对数【log(price)】的散点图
1 qplot(carat,price,data = diamonds)
2 qplot(carat,x*y*z,data = diamonds)
3 qplot(log(carat),log(price),data = diamonds)

              

 

1 qplot(carat,price,data = dsmall,colour=color)#利用颜色分类
2 qplot(carat,price,data = dsmall,shape=cut)利用形状分类
3 qplot(carat,price,data = diamonds,alpha=I(1/10))
4 qplot(carat,price,data = diamonds,alpha=I(1/200))#alpha 越小越透明

                                                                                                                                                                                                                                     

                                                                                                                                                                                                               

参数调整:methodspan
method='loess' 默认平滑算法,平滑程度由span参数(从0【很不平滑】到1【很平滑】)控制。适用于数据小于1000
method='gam' formula=y~s(x)基于mgcv包。对于大数据则用formula=y~s(x,bs='cs'),这是数据量超1000时默认选项
method='lm' formula=y~poly(x,2)或用formula=y~ns(x,2)基于splines包
method='rlm' 基于MASS包,使得结果对异常值不太敏感
1 qplot(carat,price,data = dsmall,geom = c('point','smooth'),
2       method='loess',span=0.3)#绘制散点图+平滑曲线
1 library(mgcv)
2 qplot(carat,price,data = diamonds,geom = c('point','smooth'),
3       method='gam',formula = y ~ s(x),span=0.8)
4 qplot(carat,price,data = diamonds,geom = c('point','smooth'),
5       method='gam',formula = y ~ s(x,bs='cs'),span=0.2)
1 library(splines)
2 qplot(carat,price,data = dsmall,geom = c('point','smooth'),
3       method='lm',formula=y~poly(x,2),span=0.5)
4 qplot(carat,price,data = dsmall,geom = c('point','smooth'),
5       method='lm',formula=y~ns(x,5),span=1)
  



箱线图(geom='boxplot')和扰动点图(geom='jitter')
箱线图,用colour控制外框线的颜色,用fill填充颜色,用size调节线的粗细

直方图和密度曲线图
直方图: binwidth参数通过设定组距来调节平滑度(切分位置同样可以通过参数breaks参数进行显示指定)
密度曲线图:adjust参数控制了曲线的平滑程度(adjust取值越大,曲线越平滑)
1 qplot(carat,data = diamonds,geom = 'histogram',binwidth=0.1,
2       xlim = c(0,3),fill=color)
3 qplot(carat,data = diamonds,geom = 'density',binwidth=0.01,
4       xlim = c(0,5),fill=color)

  

条形图 

1 qplot(color,data = diamonds,geom = 'bar',weight=carat)+
2   scale_y_continuous('carat')

时间序列的线条图(将点从左到右进行连接)和路径图(按照点在数据集中的顺序对其进行连接)

1 a<-economics
2 a[1:5,]

1 qplot(date,unemploy/pop,data = economics,geom = 'line')
2 #显示了失业率的变化
3 qplot(date,uempmed,data = economics,geom = 'line')
4 #失业星期数的中位数

                                                           

 

                                 

 
posted @ 2015-10-26 17:35  邬家栋  阅读(1331)  评论(0编辑  收藏  举报