星期六, 十二月 10, 2011

qplot绘图函数快速入门

绘图是进行数据探索分析的重要方法,也是数据报告中的必备元素。但进行多元数据绘图时,R语言中的基本绘图工具往往很不给力,使用lattice包又要记一大堆命令。在你痛苦不堪的时候,需要ggplot2包来拯救你。虽然在刚开始学习这种绘图方法时会有少许难度,但跨过这道坎后你会感觉到它的简洁和力量。

对于初学者ggplot2提供了qplot函数,可以方便的绘制多种图形,下面来看看它是如何作的。首先加载ggplot2包,然后读取diamonds数据,运行?diamonds可以得到关于数据的更多信息。由于该数据集非常大,所以为了举例方便从中抽取了500个样本。
----------------------
library(ggplot2)
data(diamonds)
dsmall=diamonds[sample(nrow(diamonds),500),]
----------------------
1 直方图
直方图是描述一维数值数据的分布,下述函数中的price是钻石价格变量,data表示了数据集的名字,geom表示绘图的几何对象,此处为histogram即直方图,用colour表示描边颜色,fill表示填充颜色,此外你还可以用binwidth指定划分宽度。
----------------------
qplot(price,data=diamonds,geom=c('histogram'),colour = I("darkgreen"), fill = I("white"))
----------------------

2 条形图
条形图是针对一维分类数据进行汇总计数,下面我们指定的分类变量为钻石的切工水准即cut变量。绘图函数仍是qplot,但geom参数设为bar
----------------------
qplot(cut,data=diamonds,geom='bar',fill=cut)
----------------------

3 箱线图
箱线图是根据分类变量将数值数据进行分组,下面我们想知道,不同的切工对于钻石价格有何影响,但为了同时考虑钻石重量,所以用price/carat做为变量,geom参数设为boxplot,然后加上jitter显示散点,alpha设置透明度。
----------------------
qplot(cut,price/carat,data=dsmall,geom=c('jitter','boxplot'),alpha=I(0.5),colour=cut)
----------------------

4 散点图
散点图是描述两个数值数据间的关第,对于多元数据,通常可以用散点颜色和大小来反映不同的属性,下面对钻石的重量和价格进行绘图,其中colour参数指定不同的切工所显示点的颜色,图形横轴和纵轴均为对数坐标,相当于对两个变量都进行了变换。然后针对不同切工的数据加上了线性回归线
----------------------
qplot(carat,price,data=dsmall,geom=c('point','smooth'),alpha=I(0.3),colour=cut,log='xy',method='lm',se=F)
----------------------

下图则是根据不同的切工将数据分别绘制散点图并进行loess平滑,其中facets参数指定了子图划分方法。
----------------------
qplot(carat,price,data=diamonds,geom=c('point','smooth')    ,alpha=I(0.1),facets=cut~.)
----------------------

由此可见,简单的qplot函数就有如些强大的威力,如果想发挥出ggplot2包的全部能量,还需要掌握更多的语法。

参数资料:
ggplot2 Elegant Graphics for Data Analysis (use R)

没有评论:

发表评论