格包(lattice package),主要用于对各种高维数据进行绘图。
这个绘图过程由一个默认的面板函数完成,例如panel.densityplot,panel.histogram等。
1. 可以使用的高级函数
*histogram() 直方图
*bwplot() 箱线图
*dotplot() 克利夫兰点图
*xyplot() 条形图
densityplot() 核密度图
qqmath() 理论分位数图
qq() 双样本分位数图
stripplot() 带形图
splom() 散点图
contourplot() 表面等高线图
levelplot() 表面伪色彩图
wireframe() 三维表面透视图
cloud() 三维散点图
parallel() 平行坐标图
高级格函数最显著的特点就是公式的使用(y~x),表示y轴和x轴,公式中有一个垂直线“|”,叫做管符号,已经data参数。
xyplot(y~x|z, data=n) 这是最简单的格函数模式
2. 具体使用方法
2.1 多面板直方图 histogram()
格包中的histogram用于绘制多面板直方图,以下举例说明。使用的数据如下:
数据输入下列命令,画出直方图
env=read.table("RIKZENV.txt",header = T)
library(lattice)
histogram(~SAL|Station,
data=env,
subset=(Area=="OS"), 仅仅呈现其中OS区域的数据
layout=c(1,4), 图形组合为1列4行
nint=100, 将条形的数目增加到100,密度增加
xlab="Salinity",
strip=FALSE, 取消上面的带状名称
strip.left=TRUE, 将带状名称移动到面板右边
ylab="Frequencies"
)
结果如下图:
histogram2.2 多面板密度图 densityplot()
完全使用上述histogram的data和参数
densityplot(...)
结果如下:
densityplot
2.3 qq图qqmath()
qqmath用于绘制QQ图,就是分位数-分位数图,作用是将一组连续数据的分布和一种理论分布进行比较,完全使用上述histogram的data和参数
qqmath(...)
结果如下:
qqmath
2.4 多面板盒形图bwplot()
单面板就是boxplot(),而在lattice里对应的多面板盒形图就是bwplot()
我们继续用上面的数据env
bwplot(SAL~factor(Month)|Area,
data=env,
strip=strip.custom(bg="lightgreen"), 条形名称的颜色
xlab="Month",
ylab="Salinity",
layout=c(2,5),
cex=0.2, 中值点大小
par.settings=list(
box.rectangle=list(co1=3), 不知道什么的颜色
box.umbrella=list(col=6), 极值线的颜色
plot.symbol=list(cex=0.8,col=2) 奇异点大小,颜色
)
)
结果如下:
多面板盒子图2.5 多面板散点图: xyplot
继续使用上面的数据
env$Mytime=env$Year+env$dDay3/365
xyplot(SAL~Mytime|factor(Station),
data=env
type="l", 将点用line连起来
strip=function(bg,...),
strip.default(bg='blue',...),
col.line=4
lwd=1.5 线宽
)
type还可以有多个选项,常用的有:
type="r",增加一条回归线“regress”
type="smooth",增加一个LOESS拟合
type="g",增加网格“grid”
type="a",将面板中每组均值“average”用线连起来
结果如下:
2.6 多面板克利夫兰点图:dotplot
单面板的克利夫兰点图是dotchart(),而lattice里对应的是dotplot()
dotplot(factor(Month)~SAL|Station,
subset=(Area=="OS"),
jitter.x=TRUE, 当多个观察值在同一月份具有相同值的时候,对水平方向增加少许随机变化
col=1,
strip=strip.custom(bg="white"),
cex=0.5,
ylab="Month",
xlab="Salinity",
data=env
)
结果如下:
dotplot未完待续。
网友评论