? par()
adj:用于设置文字的对齐方式,取值为[0,1],0:靠左对齐,1:靠右对齐
bg:背景色
cex:其值为数字,用于设置文字或符号相对默认值的大小
cex.axis:用于设置轴的大小
cex.lab:设置x和y轴label的cex值
cex.main:设置main title的大小
cex.sub:设置副标题的大小
col:绘图颜色
col.axis:轴的颜色
col.lab:x,y轴label颜色
col.main:主标题颜色
col.sub:副标题颜色
cra:
cin:
crt
family:字体
fg: 前景色
font: 1:default,2:加粗;3:斜体,4:粗斜体
font.axis
font.lab
font.main
font.sub
lab: 其值为c(x,y,len),用于设置x,y轴tickmark,及其长度,default为c(5,5,7)
las:
0:平行于轴
1:水平
2:垂直于轴
3:垂直
lend: 线结束时的类型
0:(round)圆线帽
1:(butt)
2:(square):方形
lheight:
ljoin:连接线的形状
lty:线的类型
lwd:线的宽度
mai:c(below,left,top,right),图形距离边框的间距
mar:
适当的参数设置,有意义的颜色设置,不同基本图间的互相组合,会使你的图更漂亮也更有力的表达数据。下面介绍一些R基本包里画图函数的参数:
hist(): breaks设置每个柱的间距;freq柱图表示count或frequency;polt设置是否画图;density和angle可以设置柱上的斜线;axes设置是否需要画坐标轴; cor设置柱图的颜色;border设置柱图边界的颜色;xlim设置横轴范围;ylim设置纵轴范围。
R的许多函数都有类似的参数名,这些函数往往有同样的功能。因此后面就只介绍比较特殊的参数。
layout():mat用矩阵设置窗口的划分,矩阵的0元素表示该位置不画图,非0元素必须包括从1开始的连续的整数值,比如:1……N,按非0元素的大小设置图形的顺序。widths用来设置窗口不同列的宽度,heights设置不同行的高度。par()的mfcol,和mfrow参数也有类似layout的功能,不过相对layout就逊色多了。
par():mar设置图离四个边缘的距离;bg设置背景颜色;xaxt和yaxt设置坐标轴标签的类型(=”n”表示不画轴标签);xlim和ylim设置坐标轴的范围。
axis():las设置坐标轴标签的方式(水平,垂直……)。
mtext():为四个坐标轴添加标签。
text():在给定坐标的位置写字。
lines():lty设置线的类型;lwd设置线的宽度。
points():pch设置点的类型。
plot():最简单的画图函数。type设置画图的类型(type=”n”表示不画数据);axes设置是否画坐标轴。常用的参数还有:xlim和ylim,xaxt和yaxt。
barplot():space设置bar图间的间距;horiz设置bar的方向是垂直或水平;beside设置height为矩阵时,每列元素的bar排列方式;add设置是否将barplot加在当前已有的图上。
legend():除了利用x,y设置图例的坐标外,用”topleft”, "center","bottomright"等设置位置非常方便。ncol设置图例的列数, horiz设置图例的排列方向。常有的参数还有col,lty,pch。
heatmap():Rowv和Colv设置是否需要按行或列聚类;scale设置是否需要按行或列标准化;na.rm设置是否移去NA;RowSideColors和ColSideColors可以在行或列边缘添加颜色;keep.dendro设置是否画聚类树。
dendrogram():'nodePar'和'edgePar'都是list,可以方便的设置节点和边的各种属性,如:颜色,样式,宽度,标签……。
在初学一个函数的时候,可能不知道函数有哪些参数,尤其是R中用...省略的参数。这时候看看“See Also:”里面提供的相关函数时非常有用的,R函数多是继承其它的更一半的函数,所以参数也会继承,理解了这一点,就能灵活应用..省略的参数了。另一方面,一些函数返回的对象的类是比较复杂的,有多个属性(一般会在“Value”里面说明这些对象的属性)。但有些函数的帮助里没有“Value”栏, 幸运的是R中的一些函数提供了对各种类通用的处理,通过这些函数你可以大概了解一个对象所有的属性。如:summary()总结对象的基本特征;attributes()列出对象的所有属性;attr()给出对象的指定属性的值;labels()列出对象的标签;str()展示对象的结构……。
学会使用这些函数和参数能让你的图更好看,但是理解R的函数结构和参数意义,会更有意义。正所谓,受之与鱼不如受之与渔。
3.1 par()函数的参数详解
函数par()可以用来设置或者获取图形参数,par()本身(括号中不写任何参数)返回当前的图形参数设置(一个list);若要设置图形参数,则可用par(tag = value)的形式,其中tag的详细说明参见下面的列表,value就是参数值,例如:
1 > # 设置边距参数和背景色
2 > par(mar = c(4, 4, 1, 0.5), bg = "yellow")
目前par()函数涉及到的图形参数大约有70个,这里只是选取其中40多个常用且较易理解的参数进行解释说明如下列表,其它参数请参阅R帮助?par。
adj 调整图中字符的相对位置;取值:长度为2的数值向量,分别表示字符
边界矩形框的左下角相对坐标点(x, y)位置的调整,向量的两个数值一般都在[0; 1]范围中(有些图形设备中也可以超出此范围),表示字符串以左下角为基准、根据自身的宽度和高度分别向左和向下移动的比例,默认为c(0.5, 0.5)。例如c(0, 0)表示整个字符(串)的左下角对准设定的坐标点,而c(1, 0)则表示字符串横向移动了自身宽度的距离,而纵向不受影响。具体示例参见图3.1左上图
ask 切换到下一个新的作图设备(通常是作一幅新图)时是否需要用户输入(敲回车键或点鼠标);TRUE表示是;FALSE表示否。当有多幅图将逐一出现而需要按顺序一步步在图形设备上展示时很有用,这种情况下若设置ask为TRUE,那么作图时每一副新图的出现都要先等待用户输入,否则所有的图将会一闪而过
bg 设置图形背景色;关于颜色值的设置请参见4.1节
bty 设置图形边框样式;取值为字符o, l, 7, c, u, ]之一;这些字符
本身的形状对应着边框样式,比如(默认值)o表示四条边都显示,而c表示不显示右侧边,参见图3.2四幅图的边框样式
cex 图上元素(文本和符号等)的缩放倍数;取值为一个相对于1的数值(默认为1)。具体的细节缩放可以通过如下参数设置(默认值均为1):
cex.axis 坐标轴刻度标记的缩放倍数
3.1 PAR()函数的参数详解25
cex.lab 坐标轴标题的缩放倍数
cex.main 图主标题的缩放倍数
cex.sub 图副标题的缩放倍数
col 图中符号(点、线等)的颜色;取值参见4.1节。与cex参数类似,具体的细节颜色也可以通过如下参数设置:
col.axis 坐标轴刻度标记的颜色
col.lab 坐标轴标题的颜色
col.main 图主标题的颜色
col.sub 图副标题的颜色
family 设置文本的字体族(衬线、无衬线、等宽、符号字体等);标准取值有:serif, sans, mono, symbol,参见图3.2坐标(2, 8)处的文本;family = 'symbol'的情况没有显示出来
fg 设置前景色(若后面没有指定别的颜色设置,本参数会影响几乎所有的后续图形元素颜色,若后续图形元素有指定的颜色设置,那么只是影响图形边框和坐标轴刻度线的颜色);颜色值参见4.1节。
font 设置文本字体样式;取值为一个整数;通常1、2、3、4分别表示正常、粗体、斜体和粗斜体1,4.6节有进一步的介绍,参见图3.2的图主标题字体
font.axis 坐标轴刻度标签的字体样式
font.lab 坐标轴标题的字体样式
font.main 图主标题的字体样式
font.sub 图副标题的字体样式
lab 设置坐标轴刻度数目(R会尽量自动“取整”2);取值形式c(x, y,len):x和y分别设置两轴的刻度数目,len目前在R中尚未生效,因此设置任意值都不会有影响(但用到lab参数时必须写上这个参数)1对于添加文本,text()函数及其vfont参数可以设置更为详细的字体族和字体样式;参见这两个演示:
demo(Hershey)和demo(Japanese),前者演示Hershey向量字体,后者演示日语的表示。2尽量向0.5、1或10的幂次靠近26 第三章细节
las 坐标轴标签样式;取0、1、2、3四个整数之一,分别表示“总是平行于坐标轴”、“总是水平”、“总是垂直于坐标轴”和“总是竖直”。仔细观察图3.2中四幅图的不同坐标轴标签方向
lend 线条末端的样式(圆或方形);取值为整数0、1、2之一(或相应的字符串'round', 'mitre', 'bevel'),注意后两者的细微区别3
lheight 图中文本行高;取值为一个倍数,默认为1
ljoin 线条相交处的样式;取值为整数0、1、2之一(或相应的字符串'round','mitre', 'bevel'),分别表示画圆角、画方角和切掉顶角,观察图3.1的三个直角的顶点
lty 线条虚实样式:0 )不画线,1 )实线,2 )虚线,3 )点线,4 )点划线,5 )长划线,6 )点长划线;或者相应设置如下字符串(分别对应前面的数字):'blank', 'solid', 'dashed', 'dotted', 'dot-
dash', 'longdash', 'twodash';还可以用由十六进制的数字组成
的字符串表示线上实线和空白的相应长度,如'F624',详细解释请参见4.3一节。
lwd 线条宽度;默认为1
mar 设置图形边界空白宽度;按照“下、左、上、右”的顺序,默认为c(5,4, 4, 2) + 0.1
mex 设置坐标轴的边界宽度缩放倍数;默认为1,本参数会影响到mgp参数
mfrow, mfcol 设置一页多图;取值形式c(nrow, ncol)长度为2的向量,分别设置行数和列数,参见附录B.2
mgp 设置坐标轴的边界宽度;取值长度为3的数值向量,分别表示坐标轴标题、坐标轴刻度线标签和坐标轴线的边界宽度(受mex的影响),默认为c(3, 1, 0),意思是坐标轴标题、坐标轴刻度线标签和坐标轴线离作图区域的距离分别为3、1、0;参见图3.1右上方小图
oma 设置外边界(Outer Margin)宽度;类似mar,默认为c(0, 0, 0,0),当一页上只放一张图时,该参数与mar不好区分,但在一页多图的情况下就容易可以看出与mar的区别3仔细观察图3.2中宽线条中黑点的位置,在画线时,这些线条的起点和终点(分别用图中的两个黑点表示)都是选择同样的坐标位置!
pch 点的符号;pch = 19)实圆点、pch = 20)小实圆点、pch = 21)圆圈、pch = 22)正方形、pch = 23)菱形、pch = 24)正三角尖、pch= 25)倒三角尖,其中,21-25可以填充颜色(用bg参数)
pty 设置作图区域的形状;默认为'm':尽可能最大化作图区域;另外一种取值's'表示设置作图区域为正方形
srt 字符串的旋转角度;取一个角度数值,参见图3.1左下方小图中分别旋转30 _和120 _的字符串
tck 坐标轴刻度线的高度;取值为与图形宽高的比例值(0到1之间);正值表示向内画刻度线,负值表示向外;默认为不使用它(设为NA}),而使用tcl参数
tcl 坐标轴刻度线的高度;取一个与文本行高的比例值;正负值意义类似tck,默认值为-0.5,即向外画线,高度为半行文本高;观察图3.1左下角小图的坐标轴刻度线
usr 作图区域的范围限制,取值长度为4的数值向量c(x1, x2, y1, y2),分别表示作图区域内x轴的左右极限和y轴的下上极限;注意,若坐标取了对数(参见xlog, ylog两个参数),那么实际上设置的极限都是10的相应幂次
xaxs, yaxs 坐标轴范围的计算方式;默认'r':先把原始数据的范围向外扩大4%,然后用这个范围画坐标轴;另外一种取值'i'表示直接使用原始数据范围;实际上还有其它的坐标轴范围计算方式,但是鉴于它们目前在R中都尚未生效,所以暂不加介绍
xaxt, yaxt 坐标轴样式;默认's'为标准样式;另外一种取值'n'意思是不画坐标轴
xlog, ylog 坐标是否取对数;默认FALSE
xpd 对超出边界的图形的处理方式;取值FALSE:把图形限制在作图区域内,出界的图形截去;取值TRUE:把图形限制在图形区域内,出界的图形截去;取值NA:把图形限制在设备区域内。
下面列表中的九组参数只能通过par()函数调用4
,而在其它作图函数中
不可设置(否则会导致错误或者被忽略):
• ask
• fig, fin
• lheight
• mai, mar, mex, mfcol, mfrow, mfg
• new
• oma, omd, omi
• pin, plt, ps, pty
• usr
• xlog, ylog
3.2 plot()及相关函数的参数说明
R中最普通的作图函数就是plot()函数,它是一个泛型函数(R中的泛型函数与Java、C++等语言可能有所不同,附录A.1中会对它进行介绍),可以接受很多不同类的对象作为它的作图对象参数;我们这里要解释的只是其中的图形参数,而非作图对象参数。
先介绍plot()的通用参数:
type 图形样式类型,有九种可能的取值,分别代表不同的样式:'p')画点;'l')画线5;'b')同时画点和线,但点线不相交;'c')将type
= 'b'中的点去掉,只剩下相应的线条部分;'o')同时画点和线,且
相互重叠,这是它与type = 'b'的区别;'h')画铅垂线;'s') 画
阶梯线,从一点到下一点时,先画水平线,再画垂直线;'S')也是画阶梯线,但从一点到下一点是先画垂直线,再画水平线;'n')作一幅空图,没有任何内容,但坐标轴、标题等其它元素都照样显示(除非用别的设置特意隐藏了)。图3.4的九幅图清楚说明了这九种类型
main 主标题;也可以在作图之后用函数title()添加上,参见4.6节
sub 副标题;同上
xlab x轴标题;同上
ylab y轴标题;同上
asp 图形纵横比y=x;通常情况下这个比率不是1,有些情况下需要设置以显示更好的图形效果,例如需要从角度表现直线的斜率:若asp不等于1,那么45_ 的角可能看起来并不像真实的45_然后我们看看默认的散点图函数plot.default()。对于一般的散点图(两
个数值变量之间),我们只需要调用plot()即可,如plot(x, y),而不必写明plot.default(x, y),原因就是plot()是泛型函数,它会自动判断传给它的数据类型从而采取不同的作图方式。plot.default()的参数当然包含了前面介绍的plot()中那些参数,此外还有:
x, y 欲作散点图的两个向量;如果y缺失,___________那么就用x对它的元素位置(1:n的整数)作散点图
xlim, ylim 设置坐标系的界限,两个参数都取长度为2的向量,它们的作用类似par()中的usr参数6
log 坐标是否取对数,TRUE或者FALSE
ann 一些默认的标记是否显示,如坐标轴标题和图标题
axes 是否画坐标轴;注意只会影响到是否画出坐标轴线和刻度,不会影响坐标轴标题
frame.plot 是否给图形加框;可以查阅box()函数,作用类似但功能更详细
panel.first 在作图前要完成的工作;这个参数常常被用来在作图之前添加背景网格(参见4.5节)或者添加散点的平滑曲线,比如panel.first= grid()
panel.last 作图之后要完成的工作;与上一个参数类似... 其它常用参数如下:
col, pch, cex, lty, lwd 这些参数的意思与par()中的参数基本相同,有所区别的是,par()中这些参数只能设置一个单值,而这里可以对它们设置一个向量,这个向量的值将依次运用到各个元素上,若向量长度短于元素个数,那么向量会被循环使用,直到所有的元素都被画出来,事实上,向量的循环使用也是R图形参数的一大特点
bg 背景色;注意与par()不同的是,这里设置的只是可以画背景色的点7的背景色,而不是设置整幅图形的背景色!
至此,我们基本上已经介绍完所有常用的图形参数,但这些参数的作用没有必要全都烂熟于心;本章可以仅作为参考资料,需要时查阅即可。后面的章节中,我们就会看到一些参数在图形元素和统计图形中的微调作用
(但也许不是微小作用)