|
R提供非常 多样的绘图 功能。如想 了解,可以输 入:demo(graphics) 或者demo(persp)。我们在这里不可能详细说明R在绘图方面的所有功能 ,主要是因为每个绘图函数都有大量的选项使得图形的绘制十分的灵活多变。
绘图函数 的工作方式 与本文前面描 述的工作方 式大为不同 ,不能把绘 图函数 的结果赋 给一个对象,其结果直 接输出到 一个“ 绘图设备 ”上。绘图设备是一个绘图的窗口或是一个文件。 有两种 绘图函 数:高级 绘图函 数(high-level plotting functions )创建一个新的图形,低级绘图函数(low-level plotting functions)在现存的图形上添加元 素。绘图 参数(graphical parameters)控 制绘图选 项,可以 使用缺省 值或者用函数par修改。我们先看 如何管理绘 图和绘图设 备,然后详细 说明绘图函 数和参数, 我们会看到一个用这些功能 产生图形的实例,最后介绍grid和lattice两个包,这两个包的作法与其他绘图函数不同。 4.1 4.1.1 管理 绘图 打开多个绘图设 备 当绘图 函数开始执行,如果没有打开绘图设备,那么R将打开一个绘 图窗口来 展示这个图形 。绘图设备可 以用适当的函 数打开。可 用的绘图设备 种类取 决于操 作系统 ,在Unix/Linux 下, 绘图窗 口称为x11, 而在Windows下称 为windows。在 所有 情 况下 都 可 以用 命 令x11()来 打开 一个绘 图窗 口 ,在Windows下仍然 有效 是因 为上 面的 命令可 以作 为windows()的 别名 。可 以用函数打开一个文件作 为绘图设 备,这包括:postscript(), pdf(), png(),. . . 可用的绘图设备列表可以用?device来察看。最后打开 的设备将成 为当前的绘 图设备,随后 的所有图形 都在这上面 显示。函数dev.list() 显示打开的列表。 > x11();
x11();
pdf() > dev.list() X11
X11
pdf 2
3
4 显示的数 字是设备的 编号,要改 变当前设备必 须使用这些 编号,为了 解 当前设备用: >dev.cur() pdf 4 为改变当前的设备: >dev.set(3) X11 3 函数dev.off()关闭一个设备:默认关闭当前设备,否则关闭有自变量指定编号的设备。R然后显示新的当前设备编号。 > dev.off(2) X11 3 > dev.off() pdf 4 在R的Widows版 本中, 有两个 特殊 的功能 值得提 及:Windows Metafile设备可以用函数win.metafile来打开,选定绘图窗口会出现“History”菜 单,我 们可 以利 用这 个菜 单中 的功 能记 录 一个 会话 中所 作的 所有 图形 ( 在缺 省状态 下 ,记 录系 统是 关闭 的, 用户 可以 点击 这个 菜单 下的“Recording”打 开它)。 4.1.2 图形的 分割 函数split.screen分割当前的绘图设备,例如: split.screen(c(1,
2)) 划分设备为两部分,可以用screen(1)或者screen(2)选择;erase.screen()删除最后绘制的图形。设备的一部分也可以被split.screen() 划分,可以作出复杂的布局。这些函数和其 他的函数是不兼容的 (比如layout()或者coplot()), 不可以用 于多个绘图设 备。它们的使 用应局限于象 图形式探索 性数据分析这 样的问题。函数layout把当 前 的图 形窗 口 分割 为 多个 部份 , 图形 将一 次 显示 在 各部 分中 。它 主要 的自 变量 是一个元 素 都是 整数 值的 矩阵 ,元素指示子窗口(“sub-windows”)的编号。例如,把设备划分为4个相等的部分: layout(matrix(1:4, 2, 2)) 当然也可以先产生这个矩阵,以更好的显现设备是如何划分的: mat <-
matrix(1:4, 2, 2) mat [,1] [,2] [1,] [2,] 1 2 3 4 >layout(mat) 为了看到创建的分割,我们可以使用函数layout.show,其自变量是子窗口的个数(这里是4)。在这个例子中,我们有: 在以 上各个 例子 中,我 们没 有用matrix()的选项byrow, 子窗口按列编号; 我们可以指定matrix(...,
byrow=TRUE),则窗 口将按 行编号 。在矩阵中的编号可以用任何次序,例如matrix(c(2, 1,
4,
3),
2,2)。缺省情况下,layout()用等间隔分配子窗口:可以用选项widths 和heights修 改 分 割 的 宽 和 高 。 这 些 尺 寸 是 相 对 给 定 的(也可以用厘米 , 详见?layout),例如: file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/50871181/QQ/WinTemp/RichOle/S%7D3UN2YLJ(CA~J%7DF]9B(HTF.jpg
最后,矩阵里面的编号可以包括0,使得复杂的(甚至怪异 的)分割成为可能。 file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/50871181/QQ/WinTemp/RichOle/@%60R04OEJ7]58IUXAAHL~7SH.jpg
4.2 绘图 函数 下面是R中高级绘图函数的概括: 绘图 函数 下面是R中高级绘图函数的概括: plot(x)
| 以x的元素值为纵坐标、以序号为横坐标绘图
| plot(x,y)
| x(在x-轴上)与y(在y-轴上)的二元作图
| sunflowerplot(x,y)
| 同上
但是以相似坐标的点作为花朵,其花瓣数目为点的个数
| pie(x)
| 饼图
| boxplot(x)
| 盒形图(“box-and-whiskers”)
| stripchart(x)
| 把x的值画在一条线段上,样本量较小时可作为盒形图的替代
| coplot(x~y|z)
| 关于z的每个数值(或数值区间)绘制x与y的二元图
| interaction.plot(f1,f2,y)
| 如果f1和f2是因子,作y的均值图,以f1的不同值作为x轴
,而f2的不同值对应不同曲线;可以用选项fun指定y的其他
的统计量(缺省计算均值,fun=mean)
| matplot(x,y)
| 二元图,其中x的第一列对应y的第一列,x的第二列对应y的第二列,依次类推。
| dotchart(x)
| 如果x是数据框,作Cleveland点图(逐行逐列累加图)
| fourfoldplot(x)
| 用四个四分之一圆显示2X2列联表情况(x必须是dim=c(2,2,k)的数组,或者是dim=c(2,2)的矩阵,如果k=1)
| assocplot(x)
| Cohen–Friendly图,显示在二维列联表中行、列变量偏离独立性的程度
| mosaicplot(x)
| 列联表的对数线性回归残差的马赛克图
| pairs(x)
| 如果x是矩阵或是数据框,作x的各列之间的二元图
| plot.ts(x)
| 如果x是类"ts"的对象,作x的时间序列曲线,x可
以是多元的,但是序列必须有相同的频率和时间
| ts.plot(x)
| 同上,但如果x是多元的,序列可有不同的时间但须有相同的频率
| hist(x)
| x的频率直方图
| barplot(x)
| x的值的条形图
| qqnorm(x)
| 正态分位数-分位数图
| qqplot(x,y)
| y对x的分位数-分位数图
| contour(x,y,z)
| 等高线图(画曲线时用内插补充空白的值),x和y必须为向量,z必须为矩阵,使
得dim(z)=c(length(x),length(y))(x和y可以省略)
| filled.contour(x,y,z)
| 同上,等高线之间的区域是彩色的,并且绘制彩色对应的值的图例
| image(x,y,z)
| 同上,但是实际数据大小用不同色彩表示
| persp(x,y,z)
| 同上,但为透视图
| stars(x)
| 如果x是矩阵或者数据框,用星形和线段画出
| symbols(x,y,...)
| 在由x和y给定坐标画符号(圆,正方形,长方形,星,温度计式或者盒形图),符号的类型、大小、颜色等由另外的变量指定
| termplot(mod.obj)
| 回归模型(mod.obj)的(偏)影响图
|
每一个函数,在R里都可以在线查询其选项。某些绘图函数的部分选项是一样的;下面列出一些主要的共同选项及其缺省值:add=FALSE
如果是TRUE,叠加图形到前一个图上(如果有的话)axes=TRUE
如果是FALSE,不绘制轴与边框type="p"
指定图形的类型,"p": 点,"l": 线,"b": 点连线,"o":同上,但是线在点上,"h": 垂直线,"s": 阶梯式,垂直线顶端显示数据 ,"S": 同上,但是 在垂直线底端显示数据xlim=, ylim=
指 定 轴 的 上 下 限 , 例 如xlim=c(1, 10)或者xlim=range(x)xlab=, ylab=
坐轴的标签,必须是字符型值main= 主标题,必须是字符型值sub= 副标题(用小字体) 4.3
低级 绘图命 令 R里面有一套绘图函数是作用于现存的图形上的:称为低级作图命
令(low-level plotting commands)。下面有一些主要的:
points(x,y) | 添加点(可以使用选项type=) | lines(x,y) | 同上,但是添加线 | text(x,y,labels,...) | 在(x,y)处添加用labels指定的文字;典型的用法是:plot(x,y,type="n");text(x,y,names) | mtext(text,side=3,line=0,...) | 在边空添加用text指定的文字,用side指定添加到哪一边(参照下面的axis());line指定添加的文字距离绘图区域的行数 | segments(x0,y0,x1,y1) | 从(x0,y0)各点到(x1,y1)各点画线段 | arrows(x0,y0,x1,y1,angle=30,code=2) | 同上但加画箭头,如果code=2则在各(x0,y0)处画箭头,如果code=1则在各(x1,y1)处画箭头,如果code=3则在两端都画箭头;angle控制箭头轴到箭头边的角度 | abline(a,b) | 绘制斜率为b和截距为a的直线 | abline(h=y) | 在纵坐标y处画水平线 | abline(v=x) | 在横坐标x处画垂直线 | abline(lm.obj) | 画由lm.obj确定的回归线(参照第五章) | rect(x1,y1,x2,y2) | 绘制长方形,(x1,y1)为左下角,(x2,y2)为右上角 | polygon(x,y) | 绘制连接各x,y坐标确定的点的多边形 | legend(x,y,legend) | 在点(x,y)处添加图例,说明内容由legend给定 | title() | 添加标题,也可添加一个副标题 |
axis(side,vect) | 画坐标轴,side=1时画在下边,side=2时画在左边,side=3时画在上边,side=4时画在右边。可选参数at指定画刻度线的位置坐标 | box() | 在当前的图上加上边框 | rug(x) | 在x-轴上用短线画出x数据的位置 | locator(n,type="n",...) | 在用户用鼠标在图上点击n次后返回n次点击的坐标(x,y);并可以在点击处绘制符号(type="p"时)或连线(type="l"时),缺省情况下不画符号或连线 |
注 意, 用text(x,y,expression(...))可以在一个图形上加上数学公式,函数expression把自变量转换为数学公式。例如, > text(x, y, expression(p
== over(1,
1+e^-(beta*x+alpha)))) 在图中相应坐标点(x,y)处显示下面的方程: file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/50871181/QQ/WinTemp/RichOle/%7DLDH@V2)G@21$LEDAP0PF0T.jpg
为了能在表达式中代入某个变量的值,我们可以使用函数substitute和as.expression,例如,为了代入R 的值(之前计算并储存在对象Rsquared中) > text(x, y, as.expression(substitute(R^2==r, list(r=Rsquared)))) 在图中相应坐标点(x,y)处显示:R
= 0.9856298如果只显示3位小数,我们可以修改代码如下: > text(x, y, as.expression(substitute(R^2==r, +
list(r=round(Rsquared, 3))))) 将显示: R
= 0.986 最后,用斜体字显示R: > text(x, y, as.expression(substitute(italic(R)^2==r, +
list(r=round(Rsquared, 3))))) R
= 0.986 4.4
绘图 参数 除了低级 作图命令之 外,图形的 显示也可以用 绘图参数来 改良。绘图 参数可以 作为图形函数 的选项(但不 是所有参数都 可以这样用 ),也可以用 函数par来永久 地改变绘图参 数,也就是说 后来的图形都 将按照par指定的参 数来绘制。例如,下面的命令: > par(bg="yellow") 将导致后
来的图形
都以黄色的
背景来绘制
。有73个绘图参
数,其中一
些有非常相
似的功能。这
些参数详细的
列表可以参阅?par;下
面的表格只列
举了最常用的参数。
file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/50871181/QQ/WinTemp/RichOle/ZTR%25DM)ZAPV8DH%7B0E%7DZSHA0.jpg file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/50871181/QQ/WinTemp/RichOle/DYQH]AR]76)SWP0ZHOOPA%252.jpg
图 2: R (pch=1:25)的绘图符号。用选项col="blue",bg="yellow"来产生如上的颜色,其中背景色选项只对符号21–25有作用。可以使用任 意字符作为绘点符号(pch="*", "?", ".", . . . )。 4.5 一个 实例为了讲解R的绘图功能,让我们来看一个简单的10对随机值的二维图形的例子。这些值用以下命令生成: > x
<- rnorm(10) > y
<- rnorm(10) 所需的图可以用plot()来产生;只要输入命令: > plot(x, y) 则图形将绘制在当前的绘图设备上。结果见图 3。缺省情况下,R用“智能”的方法绘制图形:R自动计算坐标轴上刻度摆放,标记的位置等,使得图形尽可能的易于理解。用户仍然 可以改变绘 图的方法, 例如,为了遵 照某刊物的 要求,或为 某个演讲 作个性化调整 最简单的方 式就是用选项 值取代缺省 值来修改图形 绘制方式。在我们的例子中,我们可以用以下方式大大改变图形: plot(x,
y, xlab="Ten random values",
ylab="Ten other
values",xlim=c(-2,
2),
ylim=c(-2,
2), pch=22, col="red",bg="yellow", bty="l",
tcl=0.4,main="How
to customize a
plot with R", las=1, cex=1.5) file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/50871181/QQ/WinTemp/RichOle/G91N@A%60G05%602YRUCMEI2T~K.jpg
结果见图 4。我们来详细说明其中的每个选项。首先,xlab 和ylab改变坐标轴标签,缺省情况下是变量的名字。然后,xlim 和ylim允许我们规定两个坐标轴的范围 。绘图参数pch在这里用作一个选项:pch=22为正方形,其轮廓颜色和背景色可能不一样,分别由col和bg指定。图形参数表中说明了bty,tcl,las和cex的作用最后,选项main添加了标题。绘图参数和低级作图函数使我们可以进一步改 善图形。前面我们已经看到,一些绘图参数不允许作为plot这样的函数的自变量。我们可以用par()来修改这些参数这样就必须输入多行的命令。在改变绘图参数时,预先保存它们的初始值以便以后恢复十分有用。以下命令可以产生图 5。 opar
<-
par() par(bg="lightyellow", col.axis="blue", mar=c(4,
4, 2.5,
0.25)) plot(x,
y, xlab="Ten random values",
ylab="Ten other
values", xlim=c(-2,
2),
ylim=c(-2,
2), pch=22, col="red", bg="yellow", bty="l", tcl=-.25, las=1,
cex=1.5) title("How to customize a
plot
with R
(bis)", font.main=3,
adj=1) par(opar) 我们详细解释这些命令的作用。首先,缺省的绘图参数被复制到列表opar中。然后有三个参数被修改:bg修改背景色,col.axis修改轴上数字的颜色,mar来修改绘图边空 大小。这个图形用几乎和图 4相似的方式画出。边空的修改让我们更好地利用绘图区周围的空白 。用低级函数title添加标 file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/50871181/QQ/WinTemp/RichOle/Q26_X%7B(9PYUG%7BJ$%7B2R%7BLX1A.jpg
file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/50871181/QQ/WinTemp/RichOle/~QNT1ZCB45L3(G]J%60@)Z]QN.jpg
题,这样允许给定一些参数作为自变量而不改变图形的其余部分。最后一行的命令恢复初始的绘图参数。现在,完全控制!在图 5中,R仍然自动决定了诸如坐标轴刻度的个数,标题与绘图区域之间的距离等少许事情。我们现在将看到如何完全控制图形的绘制。这里用的 方法是用plot(...,type="n")绘制一个“空白”的图 形,然后用低级函数来添加点,坐标轴 ,标签等。我 们可以想出诸如改变绘图区域颜色这样的安排。命令如下,产生的图形见图 6 opar
<-
par() par(bg="lightgray",
mar=c(2.5,
1.5, 2.5,
0.25)) plot(x,
y, type="n", xlab="",
ylab="", xlim=c(-2, 2), ylim=c(-2,
2),
xaxt="n",
yaxt="n") rect(-3,
-3, 3,
3,
col="cornsilk") points(x, y, pch=10, col="red", cex=2) axis(side=1, c(-2,
0, 2),
tcl=-0.2, labels=FALSE) axis(side=2, -1:1,
tcl=-0.2, labels=FALSE) title("How to customize a
plot
with R
(ter)", font.main=4,
adj=1,
cex.main=1) mtext("Ten random values",
side=1, line=1, at=1,
cex=0.9, font=3) mtext("Ten other values",
line=0.5, at=-1.8,
cex=0.9, font=3) mtext(c(-2,
0,
2),
side=1,
las=1,
at=c(-2, 0, 2), line=0.3, col="blue", cex=0.9) mtext(-1:1,
side=2,
las=1,
at=-1:1, line=0.2, col="blue", cex=0.9) par(opar) 和以前一 样,先保存缺省的绘图参数,然后修改背景颜色和边空。画图时用type="n"不画出点,用xlab="",ylab=""不画坐标轴标签,和用xaxt="n",yaxt="n"不画坐 标轴。 这样只画了绘 图区域的边框,并用xlim和ylim规定了坐标轴 范围。注意,我们可以用选项axes=FALSE,但这样的话不仅不画坐标轴,而且也不画边框。然后,用低级图形函数在上面确 定的坐标区域内加入各种 图形元素。 在添加点以 前,用rect()修改绘 图区域的颜色 :长方形大小选 得比绘图区域 大得多。 用points()画点;用了一个新 的符号。用axis()添 加坐标轴:第二个自变量提供的向量指定坐标刻度位置。选项labels=FALSE指定画坐标轴时不画刻度数字。这个选 项也可以用于字符式样的向量,例如labels=c("A",
"B","C")。 用title()添加标题 , 但是字体稍微改变了。开始的两个边空文字函数mtext()调用 画坐标轴的标签。 这个函数的第一自变量是要画的文本。选项line指出到绘图区域的距离行数( 缺省时line=0),at给出坐标。第二次调用mtext(),调用利 用了side (3)的缺省值。另外 两个mtext()用数值型向量作第一自变量,会自动转换为字符型。 4.6 grid 和lattice 包 grid 和lattice包实现grid和lattice系统。grid是一个新的绘图模式,其绘图参数的系统和上面所讲的截然不同。grid与基本的图形比较,主要的不同之处有以下两点: • 用viewports可以以更灵活的方式来分割绘图设备,使其全部 覆盖(绘图对象甚至可以在不同的视口中共享,例如,箭头记号); • 绘图 对象(grob)可以被 修改或者从 一个图形中 移除,并不 需要重新绘 制所有的图形(用基本图形时必须重绘)。 grid图形通常不可以 用来和基本图形组 合或者混合(必须用gridBase包来作 )。 可是 ,在 相同 的绘 图设 备上 , 同一 会话 里用 两种 绘图 模式 是 有可 能的。Lattice本来是S-PLUS里的Trellis图形在R中的实现。Trellis是多元数据可视化的方法,特别适用于发现各变量之间的相互作用关系 。Lattice(Trellis)的主要 想法是不同条 件下的多个图 :根据某变量 的值的不同 对两个变量作 不同图。函数coplot作用类似,但是lattice提供了更广泛的功能。Lattice用grid图形模式。 在lattice里, 大部 分的 函 数都 把一 个公 式作 为他 们的 主 要自 变量 ~
x。公式y
~ x
| z是指按z值的不同关于y对x作不同图形。 下面 的表格 给出 了lattice中的主 要函 数。 表中列 出的 作为自 变量 的公 式 是典型的用法,但是,所有的这些函数接受条件 公式(y ~
x |
z)作 为主要变 量;在后一种情况下,对z的不同取值将作多个图形。 file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/50871181/QQ/WinTemp/RichOle/]2]F8AA0Q1T1GM$FB3DY1%60T.jpg
为了 举例说 明lattice的一些方面 ,让 我们 来看一 些例 子。包 必须 要用 命令library(lattice)来装载在内存中,使得包的函数可以被访问。让我们从密度函 数图形开始。这样的 图形可以用densityplot(~ x)简 单的作出,将作出经验密度函数曲线并在x-轴处用散点显示各观测值(如rug()所作)。我们的例子将稍 微的变复杂一些,在每个图形里,除经验密度曲线 之外还叠加 一个正态密度拟合曲 线。这样必 须用自变量panel 来定义每个图上 绘制什么。命令如下: n <-
seq(5,
45,
5) x <-
rnorm(sum(n)) y <-
factor(rep(n,
n),
labels=paste("n =", n)) densityplot(~ x
| y,panel =
function(x, ...)
{ panel.densityplot(x,
col="DarkOliveGreen",
...) panel.mathdensity(dmath=dnorm, args=list(mean=mean(x), sd=sd(x)), col="darkblue") }) file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/50871181/QQ/WinTemp/RichOle/P$B5C$S9%7BUX2O1B]0K~FYPT.jpg
命令 的 前三 行产 生 随机 独 立正 态样 本 ,分 割成 个 数等 于5, 10, 15, . . .,和45 的子样本。然后用densityplot为每个子样本产生图形。panel作为函数的自变量。在我们的例子中,我们定义一个函数调用lattice中的预先确定的两个 函数 :panel.densityplot绘制 经 验 密度 函 数 ,panel.mathdensity绘 制拟合 的正态 分布密 度函数 。函数panel.densityplot被缺省 调用如 果没有 自变量给panel:命令densityplot
(~
x |
y)将有和图 7相同的结果,但是 没有蓝线。下一个例子是 修改lattice包帮助理的例子得到 的,用一些R里面有的数 据集:斐济岛附近1000个地震位置,和一些三种鸢尾花朵的测量值。图 8显示不同深度的地震的地理位置,作图命令如下: data(quakes) mini
<-
min(quakes$depth) maxi
<-
max(quakes$depth) int
<- ceiling((maxi -
mini)/9) inf
<- seq(mini, maxi,
int) quakes$depth.cat <-
factor(floor(((quakes$depth
- mini)
/ int)), labels=paste(inf, inf + int, sep="-")) xyplot(lat ~ long |
depth.cat,
data =
quakes) 第一个命令是在内存中装载数据quakes。后面的5行命令创建了一个把深度等分 为九个区间的 因子:因子水 平标签为区间 的上下界。 下面就只要用 适当的公式 调用xyplot函数,其 中用data自 变量指定绘图用 的各变量所在的 数
file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/50871181/QQ/WinTemp/RichOle/W%7BPCC97IZ%6038ED17JSR%7BF2E.jpg
关于数 据iris, 不同物种 的重叠部 分十分小 ,使得 可以画在 图 9中。 命 令如下: data(iris) xyplot( Petal.Length
~ Petal.Width,
data =
iris, groups=Species, panel
= panel.superpose, type =
c("p",
"smooth"),
span=.75, auto.key = list(x
= 0.15, y
= 0.85) ) 在这 里 调用 函 数xyplot比之 前 的例 子 要复 杂些 , 所用 的一 些 选项 , 我们 将 详 细 介 绍 。 选 项groups定 义 组 以 便 被 其 他 选 项 引 用 。 我 们 已 经 知 道选 项panel是 来 定 义如 何 在 图 中显 示 不 同组 的 : 我 们在 这 里 用了 预 先 定 义的 函 数panel.superpose,是 为 了 把 不 用的 组 重 叠 的 绘 制在 同 一 个 图 里 。没 有 给panel.superpose传递 选 项 , 使 用缺 省 颜 色 用 于 区分 不 同 的 组 。 选项type和在plot()中一样 ,指定数据如何 显示,但是这里 我们可以给出包 含若干元 素的向量作 为自变量:"p" 表 示画点,"smooth"表示画 光滑曲线, 其光滑程度用span指定 。选项auto.key在图形中添加图例 :只需要给出一个 指定图例 的坐标的列表 。注意,这里 的坐标是相对 与图形大小 的比例值(也 就是在[0, 1])。
file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/50871181/QQ/WinTemp/RichOle/0K]S1CK%7DP]QL7HXEL%7DG0NUR.jpg
我 们现 在 看 到用 函 数splom用于 相 同 的数 据iris上。 用 以 下 命令 来 绘 制 图 10: splom(~iris[1:4], groups =
Species, data
= iris,
xlab =
"",panel
= panel.superpose,auto.key = list(columns
= 3)) 这次 主 要的 自变 量 是一 个 矩阵 (iris的前 四列 ) 。结 果 是一 系列 可 能的 在矩 阵 列 之中 的 二元 图 , 就像 标 准函 数pairs。缺 省 下 ,splom在x-下 加上“Scatter Plot Matrix”的文字:要 消除的话,可 以用选项xlab=""。其他 的选项和前面的例 子类似,除了auto.key的columns =
3是指定图例显示在3列中。图 10可以用pairs()做 出,但是 后者的 函数不可 以作像图Fig. 11一样 的有条件的图形。使用的代码相对简单: splom(~iris[1:3] |
Species, data = iris,
pscales
= 0,varnames
= c("Sepal\nLength", "Sepal\nWidth",
"Petal\nLength")) 子图相对比较小,我们添加了两个选项来改进图的易理解性:pscales
=0 移除坐标 轴的刻度 (所有的子 图用相同 的刻度绘制 ),变量的 名字被重 新定义,并用两行来显示("\n"表示换行)。最后 的 例子 用平 行坐 标 来探 索多 元数 据 分析 的方 法 。变 量安 排在 一 个坐标轴 上(例如y-轴),观 测值绘制 在另一坐 标轴上( 变量取值 范围调整 到 file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/50871181/QQ/WinTemp/RichOle/%25WD(XB]3QO(ZPP2(1)GNCYC.jpg
file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/50871181/QQ/WinTemp/RichOle/Z%60$Q75((](NIHQJ_PV@EZ(3.jpg
file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/50871181/QQ/WinTemp/RichOle/%7BBEN(PUV@_2WL~93)7BWE]3.jpg
可 比, 例如 ,标 准化 之) 。相同个体不同变量的值连接在一条线上 。用据iris,下面的命令可以得到图 12: parallel(~iris[, 1:4] | Species, data
= iris, layout
= c(3,
1))
|
|