R中设置图形参数--函数par()详解
R有着⾮常强⼤的绘图功能,我们可以利⽤简单的⼏⾏代码绘制出各种图形来,但是有时候默认的图形设置没法满⾜我们的需要,甚⾄会碰到各种各样的⼩问题:如坐标轴或者标题出界了,或者图例说明的⼤⼩或者位置遮挡住了图形,甚⾄有时候默认的颜⾊也不能满⾜我们的需求。如何进⾏调整呢?这就⽤到了“强⼤”的函数par()。我们可以通过设定函数par()的各个参数来调整我们的图形,这篇博⽂就是对函数par()的各个参数进⾏⼀下总结。
函数par()的使⽤格式如下:
par(...,no.readonly = FALSE)
其中...表⽰所有类似于tag=value形式的参数。下⾯会具体的对这些参数进⾏描述。当参数no.readonly=TRUE时,函数par()就只允许有这⼀个参数了,并且会返回当前绘图设备中各个参数的参数值。
每⼀个图形设备都有⾃⼰的绘图参数,如果当前还没有打开绘图设备,那么函数par()在进⾏参数设置之前会⾃动的打开⼀个新绘图设备。如前⾯所说,直接在R编辑器中输⼊命令par()或者adonly=TRUE)都可以获取当前的各个绘图参数。
函数par()中的参数可以分为三⼤类:
1. 只能读取,不能进⾏设置。包括参数cin,cra,csi,cxy,din。
2. 只能通过函数par()进⾏设置。包括参数:
1. "ask",
2. "fig", "fin",
3. "lheight",
4. "mai", "mar", "mex","mfcol", "mfrow","mfg",
5. "new",
6. "oma", "omd","omi",
7. "pin", "plt", "ps","pty",
8. "usr",
9. "xlog", "ylog"
4. 剩下的参数除了函数par()外,还可以通过各种⾼级绘图函数进⾏设置,如函数
plot,points,lines,abline,title,text,axis,image,box,contour,rect,arrows等。
当⼀个参数的值被设定时,默认的会返回设定之前这个参数的值,我们可以通常⼀些变量把这些值保存下来。执⾏完操作之后,可以利⽤这些历史值进⾏恢复设定(但是不建议这么做,因为可能会引起⼀些参数值冲突)。如:
> x<-par(bg="red")
> x
$bg
[1] "transparent"
> plot(1:10)
> par(x)
> plot(1:100)
接下来就对各个参数的含义进⾏⼀下⼤概的说明,中间会⽤⼀些简单的代码作为⽰例。
adj。该参数值⽤于设定在text、mtext、title中字符串的对齐⽅向。0表⽰左对齐,0.5(默认值)表⽰居中,⽽1表⽰右对齐(说明⼀下,区间[0,1]内的任何值都可以作为参数adj的有效值,并且在⼤部分的图形设备中,介于区间外的值也是有效的)。注意⼀
下,函数text中的参数adj的值可以以类似于形式adj=c(x,y)调整⽅向。但是在text中该参数的值影响的是对点的标记,对函数mtext 和title来说,参数adj的值影响的是整个图像或设备区域。 > par(mfrow=c(1,2))
> plot(1:4)
> title("plot(1:4)",adj=0)
> plot(1:4)
> title("plot(1:4)",adj=1)
ann。如果ann=FALSE,那么⾼⽔平绘图函数会调⽤函数plot.default使对坐标轴名称、整体图像名称不做任何注解。默认值为TRUE。
>plot(1:4,ann=FALSE,main='plot(1:4,ann=FALSE)')#尽管指定了参数main的值,但是图像中仍然没有显⽰
> plot(1:4,ann=TRUE,main='plot(1:4,ann=FALSE)')
ask,逻辑值。若为TRUE(且当前的R会话是可交互状态),则在绘制新图像之前会要求⽤户输⼊确认信息。同样的,会对扩展包grid 和lattice的输出有影响,甚⾄可能会应⽤到没有屏幕输出的设备上(但可能会没有效果)。
bg。⽤于设定绘图区域的背景颜⾊。当通过函数par()调⽤时,会同时设定参数new=FALSE。对很多设备来说,该参数的初始值就是该设备的背景颜⾊值,其他情况下⼀般为"white"。需要注意⼀点的是,⼀些图形函数例如plot.default和points等也有名为bg的参数,但是代表的含义是不同的。
bty。该参数值为字符串型,⽤于限定图形的边框类型。如果bty的值为"o"(默认值)、"l"、"7"、"c"、"u"或者"]"中的任意⼀个,对应的边框类型就和该字母的形状相似。如果bty的值为"n",表⽰⽆边框。
cex。⽤于表⽰对默认的绘图⽂本和符号放⼤多少倍。需要注意⼀些绘图函数如plot.default等也有⼀个相同名字的参数,但是此时表⽰在函数par()的参数cex的基础上再放⼤多少倍,此外还有函数points等接受⼀个数值向量为参数。
cex.axis。表⽰在当前的cex设定情况下,对坐标轴刻度值字体的放⼤倍数。
cex.lab。表⽰在当前的cex设定情况下,对坐标轴名称字体的放⼤倍数。
cex.main。表⽰在当前的cex设定情况下,对主标题字体的放⼤倍数。
cex.sub。表⽰在当前的cex设定情况下,对⼦标题字体的放⼤倍数。
cin。这是⼀个只读参数,不能进⾏修改。以形式(width,height)返回字体⼤⼩,单位为英⼨。这和参数cra的作⽤⼀样,只是测量单位不同。
col。⽤于设定默认的绘图颜⾊(⽆可否认这是⼀个⾮常特别的参数,以后会总结博⽂专门讨论如何设定颜⾊)。
col.axis。坐标轴刻度值的颜⾊,默认为"black"。如代码:
>par(cex.axis=3,col.axis="red")
> plot(1:4)
col.lab。坐标轴名称的颜⾊,默认为"black"。
col.main。主标题的颜⾊,默认为"black"。
col.sub。⼦标题的颜⾊,默认为"black"。
cra。参见参数cin的说明。
crt。该参数的值为⼀个表⽰度数的数值,⽤于表⽰单个字符的旋转度数,最好为90的倍数。和参数srt的不同之处在于后者是对整个字符串进⾏旋转。
csi。只读参数,返回默认的字符⾼度,以英⼨为单位。
cxy。只读参数,以形式(width,height)返回默认的字符宽度、⾼度,其中par("cxy")=par("cin")/par("pin")。
din。只读参数,表⽰绘图设备的尺⼨规格,以形式(width,height)返回,单位为英⼨。
family。图形中字符的字体类型。最⼤的长度为200bytes。默认值为"",表⽰采⽤绘图设备的默认字体。
fg。图形中显著位置的颜⾊(如坐标轴、刻度线,边框等),⼀般默认为"black"。
fig。⼀个数值向量,形式为c(x1, x2, y1,y2),⽤于设定当前图形在绘图设备中所占区域,注意需要满⾜x1<x2,y1<y2。如果修改参数fig,会⾃动打开⼀个新的绘图设备,⽽若希望在原来的绘图设备中添加新的图形,需要和参数new=TRUE⼀起使⽤。如代码:
> par(fig=c(0,0.5,0,0.5))
> plot(1:3)
> par(fig=c(0.5,1,0.5,1))
> plot(1:3)
>par(fig=c(0,0.5,0,0.5),new=TRUE)
> plot(1:3)
fin。当前绘图区域的尺⼨规格,形式为(width,height),单位为英⼨。如果修改了这个参数的值,默认为
启动⼀个新的绘图设备。
font。⽤于设定采⽤哪种字型,为⼀个整数。1代表纯⽂本(默认值),2表⽰⿊体,3表⽰斜体,4表⽰⿊⾊斜体。在Adobe字符编码下,5也可以。
font.axis。坐标轴刻度值的字型。
font.lab。坐标轴名称的字型。
font.main。主标题的字型。
font.sub。⼦标题的字型。
lab。以形式c(x,y,len)表⽰的数值型向量,⽤于对坐标轴的名称进⾏设定。值x和y⽤于设定x和y轴上的刻度线的个数,⽽len设定了刻度线的长度(⽬前R中这个值是没有效应的)。
las。只能是0,1,2,3中的某⼀个值,⽤于表⽰刻度值的⽅向。0表⽰总是平⾏于坐标轴;1表⽰总是⽔平⽅向;2表⽰总是垂直于坐标轴;3表⽰总是垂直⽅向。
lend。线段的端点样式,参数值可以为⼀个整数或者⼀个字符串。参数值为0或者"round"时,表⽰端点
样式为圆⾓(默认值);为1或者"butt"时,表⽰端点直接截断;为2或者"square"表⽰延伸末端。如代码:
>plot(1:8,type="n",ylim=c(1,6))
> x0<-c(1,2,3,5,6)
> y0<-rep(1,5)
> x1<-x0
> y1<-rep(6,5)
> segments(x0,y0,x1,y1)
round函数有几个参数> x0<-rep(0,4)
>y0<-seq(1.3,4.3,1)
> x1<-c(1,6,3,1)
> y1<-y0
#默认情形
>segments(x0,y0,x1,y0,lwd=10,col="red")
#修改参数lend=1
>y0<-seq(1.6,4.6,1)
> y1<-y0
>segments(x0,y0,x1,y0,lwd=10,col="green",lend=1)
#修改参数lend=2
>y0<-seq(1.9,4.9,1)
> y1<-y0
> x0<-x1
> x1<-c(2,8,5,3)
>segments(x0,y0,x1,y0,lwd=10,col="blue",lend=2)
lty。直线类型。参数的值可以为整数(0为空,1为实线(默认值),2为虚线,3为点线,还可以为4、5、6等),也可以为字符串(和整数是⼀⼀对应的,如"blank"、"solid"、 "dashed"、 "dotted"、 "dotdash"、 "longdash"或者 "twodash")。
lwd。线条宽度。必须为⼀个整数,默认值为1。具体的实现根据设备⽽定,有⼀些绘图设备不⽀持线条宽度⼩于1。
mfcol,mrow。⽤于设定图像设备的布局(简单的说就是将当前的绘图设备分隔成了nr*nc个⼦设备),参数形式为c(nr,nc)。⼦图的绘图顺序是按列还是按⾏就分别根据是参数指定的是mfcol还是mfrow。想要实现相同的功能还可以利⽤函数layout或者split.screen。
mgp。设定标题、坐标轴名称、坐标轴距图形边框的距离。默认值为c(3,1,0),其中第⼀个值影响的是标题。
new。逻辑值,默认值为FALSE。如果设定为TRUE,那么下⼀个⾼级绘图命令并不会清空当前绘图设备。
oma。参数形式为c(bottom, left, top, right) ,⽤于设定外边界。
omi。和参数oma的作⽤⼀样,只是这次参数的单位为英⼨。
pch。表⽰点的形状,它的值可以为数值型(介于0到25之间的数值),也可以为字符型。1代表圆圈,2代表三⾓形,3代表“+”号。当pch的值为字符型时,那么点就通过该字符来表⽰。
pin。当前的维度,形式为c(width,height),单位为英⼨。
plt。形式为 c(x1, x2, y1, y2),设定当前的绘图区域。
pty。⼀个字符型参数,表⽰当前绘图区域的形状,"s"表⽰⽣成⼀个正⽅形区域,⽽"m"表⽰⽣成最⼤的绘图区域。
srt。字符串旋转度数,只⽀持函数text。
tck。刻度线的长度,为⼀个⼩于等于的⼩数,表⽰绘图区域的⾼度或宽度的⼀部分(取⾼度或宽度中较⼩的值)。如果tck=1,则表⽰绘制⽹格线。默认值为NA(相当于tcl=-0.5)。
tcl。同样可⽤于设定刻度线的长度,但是和tck的单位不同。它的默认值为-0.5。
usr。⼀个形式为c(x1, x2, y1, y2)的向量,表⽰当前绘图区域的坐标值范围:c(xleft, xright,ybottom,ytop)。
如果采⽤的对数刻度(如par("xlog")=TRUE),那么x坐标轴的表⽰范围为10^par("usr")[1:2],同样也可以得到y坐标轴的表⽰范围。
xaxp。⼀个形式为c(x1, x2,n)的向量,表⽰当par("xlog")=false时,x坐标轴的刻度线的区间及区间中的刻度线个数。若
par("xlog")=TRUE,情形就稍微复杂了:若取值范围较⼩,那么n是⼀个负数,且刻度线的分布和正常情形(没有对数转换)下相似;
若n取值为1、2、3中的⼀个,c(x1,x2)=10^par("usr")[1:2](并且此时par("usr")是指par("xlog")=TRUE情况下返回的值)。具体解释如下:
n=1,在坐标值为10^j(j为整数)处绘制刻度线。
n=2,在坐标值为k*(10^j)处绘制刻度线,其中k为1或者5。
n=3,在坐标值为k*(10^j)处绘制刻度线,其中k为1、2或者5。
yaxp。同xaxp类似,表⽰y坐标轴的刻度线的区间及区间中的刻度线个数。
xaxs。坐标轴x的间隔设定⽅式。取值范围为:"r", "i", "e", "s", "d"。⼀般来说,计算⽅式是由xlim的数值范围确定的(如果xlim指定了的话)。"r"(regular)⾸先会对数值范围向两端各延伸4%,然后在延伸后的数值区间中设置坐标值;"i"(internal)直接在原始的数据范围中设置坐标值;"s"(standard)和"e"(extended)、;"d"(direct)⽬前还不⽀持。
yaxs。类似于xaxs,对坐标轴y的间隔设定⽅式。
xaxt。⽤于设定x坐标轴的刻度值类型,为⼀个字符。"n"表⽰不绘制刻度值及刻度线;"s"表⽰绘制,默认值。
yaxt。类似于xaxt。
xlog。⼀个逻辑值。如果为TRUE,表⽰对x轴为对数坐标轴,默认值为FALSE。
ylog。类似于xlog。
最后,说明⼀点:如何设定颜⾊?R提供了很多和颜⾊相关的函数供我们调⽤,如colors()、palette()、rainbow()、rgb()、gray()、hsv()、hcl()等等。以后也会对“如何设定颜⾊”这⼀问题进⾏整理,并且接下来关于R语⾔的博⽂也会重点关注于可视化⽅⾯,包括如何绘制散点图、条形图、热点图、地图等。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。