R 基础绘图包之高级绘图函数
1、plot()
泛型函数,对于不同的数据可以绘制出不同的图形。
参数:
type: 表示所绘制散点图的类型。'p'表示绘制散点,'b'表示点连线,线不穿过点,'l'表示绘制线图,'s'表示绘制阶梯,'o'表示绘制点连线,此处线条穿过每一个点,‘n’表示不绘制任何图形元素。
type = c('p','b','l','s','o','n') par(mfrow=c(2,3)) # 切分画布 for(i in 1:6){ plot(1:10,type=type[i],main=paste('The plot type is: ', type[i])) }
main: 定义图形标题;
xlab: 定义横轴标签;
ylab: 定义纵轴标签;
axes=FALSE, 不显示坐标轴
xlim,ylim: 设置坐标轴的取值范围,该参数接受一个向量,即xlim=c(a, b), a和b分别表示坐标轴的起始和终止坐标。
2、par()
专门用来设置绘图参数的函数,par()函数对于图形参数的改变是永久性的,意思是,当打开R,直至R关闭,par()函数中的参数对你所绘制的每张图都管用。有时,我们只需要一次调用par(),而不需要它一直工作,此时有两个方法:其一:在作图前,将par()函数中所有参数保持为一个实名对象,等到图形绘制完毕,将这个实名对象释放出来即可;其二:绘图完毕后,直接调用dev.off()函数关闭绘图框,这样就不会影响下一幅图了。
adj: 用于调整图中字符的相对位置,属于微调。取值adj=c(x, y),表示字符边界矩形框的左下角相对坐标点(x, y)的位置调整。注意此参数的目的是图形微调,所以x和y的取值一般不会超过1,取值过大的话,容易导致图形元素超过图形边界,从而无法在图片上显示。
ask: 逻辑参数取值TRUE/FALSE,在没有事先将画布切分成若干小区域,但又同时画了好几张图时,R默认是一张画布只显示一张图,当ask=FALSE时,所有的图都会在绘图窗口一闪而过,所以为了清楚展示每一张图,设ask=TRUE,这时R会弹出一条消息,中文大意是“第一张图看好了吗?要不要切换到下一张,要的话,请按enter键”。当按下enter键后,第二张图就会显示出来。
bg: 颜色参数,用于设置绘图区域的背景色。
par(bg='green') plot(1:10)
bty: 设置图形边框样式,默认绘制图形四周边框,状似一个‘口’字,可取的值有'o','l','7','c','u', ']',注意,bty参数并不能将x轴和y轴去除,因此将参数设为'7',虽然只绘制上方和右边的边框,但是此时x轴和y轴并不会消失。
bty = c('o','l','7','c',']','u') par(mfrow=c(3,2)) # 切分画布,3行2列 for(i in 1:6){ par(bty=bty[i], col.axis='red', col.lab='blue') plot(1:5,main=paste('The bty is', bty[i], sep=':')) }
cex: 该参数用来设置图上的元素,比如文字或者符号的缩放倍数,接受一个正数,默认值为1, 当设置为1.5时,则表示图形上的元素为默认的1.5倍大小。有四个衍生参数:cex.lab; cex.main; cex.sub; cex.axis; 分别表示坐标轴标签,图形标题,副标题以及坐标轴刻度标签的缩放倍数。
plot(1:5,cex=1:5)
col: 颜色参数,设置图中元素的颜色。有4个衍生参数:col.lab; col.main; col.sub; col.axis
family: 设置图中文本的字体参数,默认取值有:'serif', 'sans', 'mono', 'symbol'
font: 设置文本字体样式,取值为1,2,3,4,分别表示正常,粗体,斜体,粗斜体。
las: 设置坐标轴刻度标签的样式,取值0,1,2,3,分别表示:总是平行于坐标轴;总是水平;总是垂直于坐标轴;总是垂直。
par(mfrow=c(2,2)) for(i in 0:3){ par(las=i) plot(1:5,main=paste('The las is', i, sep=':')) }
lty: 设置线条样式,取值0、1、2、3、4、5、6,分别表示: 不划线;实线;虚线;点线;点划线;长划线;点长划线;
par(mfrow=c(2,3)) for(i in 1:6){ par(lty=i, lwd=i) plot(1:5, type='l', main=paste('The lty is', i, sep=':'), sub=paste('the lwd is', i, sep=':')) }
lwd: 设置线条宽度,默认取值为1,用法类似cex参数。注意如果在par()函数中使用该参数时,图形中的所有元素,比如线条、坐标轴以及图形边框的线条均会改变。如果只需图形中线条宽度发生改变,则需要将lwd参数放到绘图函数中。
mar, mai:这两个参数均用来设置图形边界空白宽度,接受一个含有4个元素的数值向量,分别对应图形下,左,上,右的边界宽度。前者默认取值是c(5,4,4,2)+0.1,取值单位是线条宽度(line width); 后者取值单位是英寸。
mfrow, mfcol: 画布切割参数,取值mfrow=c(nrow, mcol), 表示将画布切分为n行,m列,
mgp: 设置坐标轴到画布边缘的宽度,取值为mgp=c(x,y,z),默认为mgp=c(3,1,0), 分别表示坐标轴标题、坐标轴刻度标签、坐标轴线与图形的距离。
pch: 设置点的形状。取值为数字1至25,其中实心点(15~20号)可以有背景色填充。
plot(rep(1:5, times=5),rep(1:5, each=5),pch=1:25,cex=1.5,bty='l',xlim=c(1,5.4),xlab='',ylab='',main='25种不同的点型') text(rep(1:5, times=5)+0.15, rep(1:5, each=5), labels=1:25, col='red')
srt: 该参数用来控制图形中字符串的旋转角度。常规取值为-360~360,
tck, tcl: 这两个参数都表示坐标轴刻度线的高度,前者取值是与图形宽度和高度的比例值(取值-1~1之间),后者取值是与文本行高的比例值。负值表示坐标轴刻度外向,正值表示向内。
par(mfrow=c(1,2)) plot(1:10,tck=0.03,main='tck=0.03') plot(1:10,tck=-0.03,main='tck=-0.03')
usr:该参数用于限定画布的大小,取值为usr=c(x1,x2,y1,y2), 分别表示图形x轴的左右极限,y轴的下上极限,即一个矩形区域。
xaxt,yaxt: 设置坐标轴的样式,默认是's',即标准样式。如果不需要坐标轴或者需要自定义坐标轴,那么此处可以设置为‘n’,即表示不绘制坐标轴的刻度和刻度标签,但仍然会绘制一条刻度线。
xlog,ylog:坐标轴取值的log转换参数,默认值为FALSE
fig: 该参数接受一个数值向量,取值为fig=c(x1,x2,y1,y2), 该参数往往配合new=TRUE参数使用,用于在当前图形上添加一幅新的图形。
x <- rnorm(1000) qqnorm(x) qqline(x, col='red') # 添加正态拟合线,线条为红色 op <- par(fig=c(0.02,0.5,0.5,0.98), new=TRUE) # 将par对象的参数赋值给op对象 hist(x,probability=T,col='light blue',xlab='',ylab='',main='',axes = F) lines(density(x),col='red',lwd=2) # 添加概率密度曲线 box() # 给新图形加上边框 par(op) # 释放参数
xpd:该参数用于绘制绘图区域的大小,取值为TRUE,FALSE,或者NA。当取值为FALSE时,表示将绘图区域限定在默认的绘图区域内;当取值为TRUE时,表示将绘图区域限定在默认的图形区域;当取值为NA时,表示将绘图区域限定为默认的设备区域。设备区域可以看成时Rstudio中plots窗口的面积,图形区域指图形的‘占地面积’,绘图区域是指图形中点、线、条柱等元素所占的面积,图形中的坐标轴或者图形标题等元素就是出现在图形区域中,而非绘图区域。xpd参数的作用就是在事先设定绘图区域的大小,
par(omi=c(0.1,0.1,0.2,0.2),mai=c(2,2,1,2),xpd=NA) #omi参数用于定义图形区域与设备区域之间的间距,单位是英寸。mai定义绘图区域与图形区域之间的间距,单位英寸。 plot(1:10) text(3,-5,'这是在绘图区域外添加的文字哟~') text(-0.5,12,'A',cex=3,family='serif') # 在绘图区域外添加文字
par(omi=rep(0,4),mai=c(2.5,2,1,2),xpd=NA) #omi参数用于定义图形区域与设备区域之间的间距,单位是英寸。mai定义绘图区域与图形区域之间的间距,单位英寸。 plot(1:10) text(-0.5,12,'A',cex=2,family='serif') # 在绘图区域外添加文字 par(new=T,mai=c(1,2,2.5,2)) plot(1:10) text(-0.5,12,'B',cex=2,family='serif')