Advanced Graphs(高级图形)二
3.组合绘制
R 通过par( ) 可能layout( )函数让多个画图组合成一个总的图表事情变得很简朴.
通过 the par( ) 函数, 你可以包罗选项 mfrow=c(nrows, ncols) 来建设一个通过行填充nrows x ncols 矩阵平面图. mfcol=c(nrows, ncols) 通过列来填充矩阵.
# 4个2行2列布置的图表
attach(mtcars)
par(mfrow=c(2,2))
plot(wt,mpg, main=”Scatterplot of wt vs. mpg”)
plot(wt,disp, main=”Scatterplot of wt vs disp”)
hist(wt, main=”Histogram of wt”)
boxplot(wt, main=”Boxplot of wt”)
# 3行1列布置的3个图表
attach(mtcars)
par(mfrow=c(3,1))
hist(wt)
hist(mpg)
hist(disp)
函数 layout( ) 具有名目layout(mat) 个中
mat 是一个矩阵工具来指定N 个图形绘制位置.
# 一个图形在第一行,两个图形在第二行
attach(mtcars)
layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE))
hist(wt)
hist(mpg)
hist(disp)
视环境, 你可以包罗widths= 和 heights= 选项在layout( ) 函数中来更精确节制每个图形巨细. 这些选项有名目
widths= 列宽向量值
heights=行高向量值.
数值指定的相关的宽度. 宽度 (厘米) 通过 lcm() 函数指定.
# 一个图形在第一行且两个图形在第二行
# 行1是1/3行2高
# 列2是1/4列1宽
attach(mtcars)
layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE),
widths=c(3,1), heights=c(1,2))
hist(wt)
hist(mpg)
hist(disp)
参考 help(layout) 得到更具体信息.
3.1建设紧密节制图形部署
在下面的例子中,两个箱线图添加到散点图里来建设一个加强图形.
# 添加箱线图添加到散点图
par(fig=c(0,0.8,0,0.8), new=TRUE)
plot(mtcars$wt, mtcars$mpg, xlab=”Miles Per Gallon”,
ylab=”Car Weight”)
par(fig=c(0,0.8,0.55,1), new=TRUE)
boxplot(mtcars$wt, horizontal=TRUE, axes=FALSE)
par(fig=c(0.65,1,0,0.8),new=TRUE)
boxplot(mtcars$mpg, axes=FALSE)
mtext(“Enhanced Scatterplot”, side=3, outer=TRUE, line=-3)
领略这个图,想象整个图形区域是从 (0,0) 在左下角到 (1,1) 右上角. 名目 fig= 参数是数值向量名目 c(x1, x2, y1, y2). 第一个 fig= 配置散点图在x轴上从0 到 0.8且在y轴上从0 到 0.8. 顶层箱线图在x轴上从0 到 0.8且在y轴上从0.55 到 1. 我选择 0.55 而不是0.8 所以顶上图形会被拉近散点图. 右手边的箱线图x轴上从0.65 到1且在y轴上从0 到 0.8. 再一次, 我选择值拉近右手的箱线图到散点图. 你不得不通过尝试来获得恰如其分的值.
fig= 开始新的绘制, 所以添加到存在的图形用new=TRUE.
你可以用这个来组合几个图形 任意部署成一张图.
4.点阵图形
Deepayan Sarkar写的点阵 包, 试图通过提供更好缺省和显示多变量干系本领来提高 R 图形. 出格的, 这包支持建设格子图 – 图形显示在一个或多个变量制约下变量可能变量间干系.
典范的名目是
graph_type (formula,data)
个中graph_type是从下列中选出,公式指定显示变量和条件变量. 譬喻~x|A 是指显示x 数值变量对应于每个程度因子A. y~x | A*B 是指别离显示数值变量x和y 相对付程度因子A 和B每种组合. ~x 指单独显示数值变量x.
图形范例 |
描写 |
公式例子 |
barchart |
bar chart |
x~A or A~x |
bwplot |
boxplot |
x~A or A~x |
cloud |
3D scatterplot |
z~x*y|A |
contourplot |
3D contour plot |
z~x*y |
densityplot |
kernal density plot |
~x|A*B |
dotplot |
dotplot |
~x|A |
histogram |
histogram |
~x |
levelplot |
3D level plot |
z~y*x |
parallel |
parallel coordinates plot |
data frame |
splom |
scatterplot matrix |
data frame |
stripplot |
strip plots |
A~x or x~A |
xyplot |
scatterplot |
y~x|A |
wireframe |
3D wireframe graph |
z~y*x |
以下是一些例子. 它们利用在mtcars数据布局中的车辆数据 (英里, 重量, 齿轮数, 气缸数, 等等) .
# Lattice Examples library(lattice)
attach(mtcars)
#p#分页标题#e#
# create factors with value labels
gear.f<-factor(gear,levels=c(3,4,5),
labels=c(“3gears”,”4gears”,”5gears”))
cyl.f <-factor(cyl,levels=c(4,6,8),
labels=c(“4cyl”,”6cyl”,”8cyl”))
# kernel density plot
densityplot(~mpg,
main=”Density Plot”,
xlab=”Miles per Gallon”)
# kernel density plots by factor level
densityplot(~mpg|cyl.f,
main=”Density Plot by Number of Cylinders”,
xlab=”Miles per Gallon”)
#p#分页标题#e#
# kernel density plots by factor level (alternate layout)
densityplot(~mpg|cyl.f,
main=”Density Plot by Numer of Cylinders”,
xlab=”Miles per Gallon”,
layout=c(1,3))
#p#分页标题#e#
# boxplots for each combination of two factors
bwplot(cyl.f~mpg|gear.f,
ylab=”Cylinders”, xlab=”Miles per Gallon”,
main=”Mileage by Cylinders and Gears”,
layout=(c(1,3))
# scatterplots for each combination of two factors
xyplot(mpg~wt|cyl.f*gear.f,
main=”Scatterplots by Cylinders and Gears”,
ylab=”Miles per Gallon”, xlab=”Car Weight”)
# 3d scatterplot by factor level
cloud(mpg~wt*qsec|cyl.f,
main=”3D Scatterplot by Cylinders”)
# dotplot for each combination of two factors
dotplot(cyl.f~mpg|gear.f,
main=”Dotplot Plot by Number of Gears and Cylinders”,
xlab=”Miles Per Gallon”)
# scatterplot matrix
splom(mtcars[c(1,3,4,5,6)],
main=”MTCARS Data”)
留意, 在图1中,节制变量是可选的. 图2 和图3不同是操作了机关选项来节制安排面板.
4.1定制点阵图
与根基的R图形差异, 点阵图不受par( ) 函数大大都选项影响. 参照 help(xyplot) 查察那些选项可以改变. 在高层画图函数中,它是经常用来很容易配置上面提到的选项. 别的,你可以编写函数来改变面板底色,以下是个例子.
# Customized Lattice Example
library(lattice)
panel.smoother <- function(x, y) {
panel.xyplot(x, y) # show points
panel.loess(x, y) # show smoothed line
}
attach(mtcars)
hp <- cut(hp,3) # divide horse power into three bands
xyplot(mpg~wt|hp, scales=list(cex=.8, col=”red”),
panel=panel.smoother,
xlab=”Weight”, ylab=”Miles per Gallon”,
main=”MGP vs Weight by Horse Power”)
4.2更进一步
点阵图形是一个拥有特有成果综合图形系统. Deepanyan Sarkar 的书 Lattice: Multivariate Data Visualization with R 是本权威参考. 另外, 参考 Trellis Graphics 主页和 Trellis User’s Guide. Dr. Ihaka 在主题中建设了极好的 set of slides. 可以在 W.S. Cleavland’s 经典书 Visualizing Data中找到早期优秀的网格图.