ggplot2 之从qplot 开始


ggplot2 之从qplot 开始

qplot 是包ggplot2 中的一个快速画图函数,如果你已经对R 的基础包画图函数plot基本掌握,那么qplot 就很容易掌握了。

install.packages(‘ggplot2’) #安装ggplot2包
library(ggplot2) #加载ggplot2包
set.seed(1410) #设置随机种子
dsmall <- diamonds[sample(nrow(diamonds), 100), ] #由于数据集diamonds 数据量大,为了方便画图,从中抽取 100个小样本。
qplot 的一些参数如下:

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 x的值
y y的值(可以为空)
data 指定数据框,如果未指定则从当前环境中提取向量
facets 按某个类别分组,在一个画板上同时画出多个图形
log 字符型向量,说明哪一个坐标轴应该取对数。如log=’x’表示取x 轴的对数,log=’xy’表示取x、y 轴对数。
xlim、ylim 限制x、y 轴显示区间
main 设置主标签,位于图形顶部中间
xlab、ylab x、y 轴标签
asp 设置图形高与宽的比例
colour 设置点、线的颜色
shape 设置点、线的类型
size 设置点、线的大小
alpha 设置图形透明度
fill 设置图形填充色,如箱线图、直方图的填充色

 

geom的值 说明
‘point’ 绘制散点图
‘smooth’ 拟合一条平滑曲线,并将曲线与标准误差展现在图中
‘boxplot’ 绘制箱线图
‘path’或’line’ 在数据点之间画连线。’line只能画从左到右的连续;而’path’可以是任意方向
‘histogram’ 绘制直方图
‘freqpoly’ 绘制频率多边形
‘density’ 绘制密度曲线图
‘bar’ 绘制条形图
 

注意:对于不同类型图形,有些参数可能会有所不同,具体视情况而定。

绘制钻石重量carat 与价格price 的散点图:

qplot(carat, price, data = dsmall)

运用 colour 参数把颜色属性 color 映射到图中,不同颜色的钻石用不同颜色的点来反映:

qplot(carat, price, data = dsmall, colour = color)

运用参数shape 把钻石质量cut 属性映射到图中,可以看出不同质量的钻石用不同类型的点来表示:

qplot(carat, price, data = dsmall, shape = cut)

参数log 可以用于对指定的坐标轴取对数,log=’x’表示对x 轴取对数,log=’y’表示对y 轴取对数,log=’xy’表示对x 与y 轴都取对数:

qplot(carat, price, data = dsmall, colour = color, log = 'xy')

增加拟合线

qplot(carat, price, data = dsmall, log = 'xy', geom = c('point', 'smooth'))
 


运用参数size 把钻石质量cut 属性映射到点的大小,可以看出钻石质量越好,点越大:

qplot(carat, price, data = dsmall, colour = color, size = cut)

参数alpha 可以用于设置图形的透明度:

qplot(carat, price, data = diamonds, alpha = I(1/5))
qplot(carat, price, data = diamonds, alpha = I(1/50))
qplot(carat, price, data = diamonds, alpha = I(1/200))


运用参数 geom=’line’绘制线图,对于不同颜色的钻石用不同颜色反映,参数linetype是线的类型:

qplot(carat, price, data = dsmall, linetype = color, colour = color, geom='line')

按钻石不同质量 cut 分类,绘制其重量 carat 的箱线图,箱线图用不同颜色填充;参数colour 是用于设定箱线图的线的颜色,而 fill 是其填充色:

qplot(cut, carat, data = dsmall, geom = 'boxplot', fill = cut)

qplot(cut, carat, data = dsmall, geom = 'boxplot', colour = cut)

对于直方图而言,binwidth 参数用于设定组距来调节平滑度:

qplot(carat, data = diamonds, geom = 'histogram', binwidth = 1, xlim = c(0, 3))
qplot(carat, data = diamonds, geom = 'histogram', binwidth = 0.1, xlim = c(0, 3))
qplot(carat, data = diamonds, geom = 'histogram', binwidth = 0.01, xlim = c(0, 3))



当我们需要按某个数据属性分组绘图时,要求在同一个画板上画多个图形,可以用facets 参数实现。

facets = 说明
row_var~col_var 按row_var属性与col_var 属性分组输出图形矩阵
row_var~. 按row_var属性分组,图形只按一列输出
.~col_var 按col_var属性分组,图形只按一行输出

按钻石color 属性分组,绘制钻石重量carat 的直方图,并按照一列输出(下图左);增加参数…density..可以画出其频率图(下图右):

qplot(carat, data = diamonds, facets = color ~ ., geom = 'histogram', binwidth = 0.1, xlim = c(0, 3)) #左图
qplot(carat, ..density.., data = diamonds, facets = color ~ ., geom = 'histogram', binwidth = 0.1, xlim = c(0, 3)) #右图

按钻石color 与cut 两个属性分组,绘制钻石重量carat 的直方图,输出一个图形矩阵:

qplot(carat, data = diamonds, facets = color ~ cut, geom = 'histogram', binwidth = 0.1, xlim = c(0, 3))

 评论