ggplot笔记002——qplot()函数

浏览: 1188

 qplot()函数     

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

首先要加载ggplot2:

 if(!suppressWarnings(require('ggplot2'))){
install.packages('ggplot2')
require('ggplot2')
}

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

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

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

image.png

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

set.seed(1410)#让样本可重复
dsmall<-diamonds[sample(nrow(diamonds),100),]
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)】的散点图
 qplot(carat,price,data = diamonds)
qplot(carat,x*y*z,data = diamonds)
qplot(log(carat),log(price),data = diamonds)

image.png

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

image.png

参数调整: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包,使得结果对异常值不太敏感
 qplot(carat,price,data = dsmall,geom = c('point','smooth'),
method='loess',span=0.3)#绘制散点图+平滑曲线
 library(mgcv)
qplot(carat,price,data = diamonds,geom = c('point','smooth'),
method='gam',formula = y ~ s(x),span=0.8)
qplot(carat,price,data = diamonds,geom = c('point','smooth'),
method='gam',formula = y ~ s(x,bs='cs'),span=0.2)
 library(splines)
qplot(carat,price,data = dsmall,geom = c('point','smooth'),
method='lm',formula=y~poly(x,2),span=0.5)
qplot(carat,price,data = dsmall,geom = c('point','smooth'),
method='lm',formula=y~ns(x,5),span=1)

image.png

image.png

image.png

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

image.png

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

image.png

条形图 

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

image.png

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

 a<-economics
a[1:5,]

image.png

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

image.png

推荐 0
本文由 邬家栋 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册