R语言作图:坐标轴的设置方式
要绘制一张赏心悦目的统计图表,坐标轴的设置至关重要。在R语言底层作图中,对坐标轴的调整主要通过调整plot函数、axis函数和title函数的一系列参数完成。
plot(x,y,...) axis(side,at=NULL,labels=TRUE,tick=TRUE,line=NA, pos=NA,outer=FALSE,font=NA,lty="solid", lwd=1,lwd.ticks=lwd,col=NULL,col.ticks=NULL, hadj=NA,padj=NA,...) title(main=NULL,sub=NULL,xlab=NULL,ylab=NULL, line=NA,outer=FALSE,...)
一、plot函数的准备
在个性化设置坐标轴之前中,通常需调整plot函数中的ann、bty、xaxt、yaxt、xaxs和yaxs参数:
ann取FALSE时将不会画出标题(包括主、副标题及坐标轴标题);
bty用来设置边框形式,默认值为"o",表示四面边框都画出,其余可选值包括"l"(左下)、"7"(上右)、"c"(上下左)、"u"(左下右)、"]"(上下右)和"n"(无,即不画边框),在很多个性化绘图中,bty设为"n",后期的边框线再使用其他函数(如axis)自行添加;
xaxs和yaxs用来设置x轴和y轴的范围,默认值取“r”,表示坐标轴比给定作图范围(参数xlim和ylim给出的范围)稍微大一点儿,取”i”时表示坐标轴范围与给定作图范围完全相同,另外还可取”s”、”e”、”d”;
xaxt和yaxt取”n”时,坐标轴、刻度线以及刻度值将不会画出。
x<-seq(-4,4,0.01) y<-x^2 par(mfrow=c(2,2),mar=c(4,4,1,1)) plot(x,y)#未作处理 plot(x,y,xaxs="i",yaxs="i")#绘图边框未留白 plot(x,y,bty='l')#只保留左和下两条边框 plot(x,y,ann=F,bty="n",xaxt="n",yaxt="n")#边框、坐标轴都去掉
二、axis函数的用法
1、基本操作
side表示要操作的坐标轴,取值1、2、3、4分别代表下、左、上、右;
at表示刻度线及刻度值所在位置;
labels表示刻度值;
las表示坐标刻度值文字方向,las=0表示文字方向与坐标轴平行,1表示始终为水平方向,2表示与坐标轴垂直,3表示终为垂直方向。
x<-seq(-4,4,0.01) y<-x^2 par(mfrow=c(1,2),mar=c(4,4,1,1)) #未设置文字方向 plot(x,y,ann=F,xaxt="n",yaxt="n") axis(1,-4:4,-4:4) axis(2,seq(0,16,4),seq(0,16,4)) #文字方向水平 plot(x,y,ann=F,xaxt="n",yaxt="n") axis(1,-4:4,-4:4,las=1) axis(2,seq(0,16,4),seq(0,16,4),las=1)
2、字体字号
cex.axis表示坐标轴刻度值的字号大小,
font.axis表示坐标轴刻度值的字体,font=1表示正体,2表示黑体,3表示斜体,4表示黑斜体。
x<-seq(-4,4,0.01) y<-x^2 par(mfrow=c(2,2),mar=c(4,4,1,1)) #未设置字体字号 plot(x,y,ann=F,xaxt="n",yaxt="n") axis(1,-4:4,-4:4) #cex.axis=2 plot(x,y,ann=F,xaxt="n",yaxt="n") axis(1,-4:4,-4:4,cex.axis=2) #font.axis=2 plot(x,y,ann=F,xaxt="n",yaxt="n") axis(1,-4:4,-4:4,font.axis=2) #font.axis=3 plot(x,y,ann=F,xaxt="n",yaxt="n") axis(1,-4:4,-4:4,font.axis=3)
3、颜色
col表示图的颜色,用在axis函数中表示坐标轴线和坐标刻度线的颜色;
col.axis表示坐标轴刻度值的颜色;
col.ticks表示坐标轴刻度线的颜色。
x<-seq(-4,4,0.01) y<-x^2 par(mfrow=c(2,2),mar=c(4,4,1,1)) #未设置颜色 plot(x,y,ann=F,bty="n",xaxt="n",yaxt="n") axis(1,-4:4,-4:4) #col=2 plot(x,y,ann=F,bty="n",xaxt="n",yaxt="n") axis(1,-4:4,-4:4,col=2) #col.axis=2 plot(x,y,ann=F,bty="n",xaxt="n",yaxt="n") axis(1,-4:4,-4:4,col.axis=2) #col.ticks=2 plot(x,y,ann=F,bty="n",xaxt="n",yaxt="n") axis(1,-4:4,-4:4,col.ticks=2)
4、位置
line表示坐标轴线位置与图像边框的距离,取负数时会画在图像边框以内;
mgp默认值为c(3,1,0),三个数字分别代表坐标轴标题、刻度值和轴线与绘图边框的距离;
tcl默认值为-0.5,数值表示刻度线长度,负值表示刻度线朝外,正值朝里;
pos表示轴线所在的位置;
line.outer取TRUE时,坐标轴将画在画布边缘处;
hadj指将刻度值沿平行坐标轴方向调整的距离;
padj指将刻度值沿垂直坐标轴方向调整的距离。
x<-seq(-4,4,0.01) y<-x^2 par(mfrow=c(2,2),mar=c(4,4,1,1)) #未设置刻度值位置 plot(x,y,ann=F,xaxt="n",yaxt="n") axis(1,-4:4,-4:4) #使用line调整刻度值位置 plot(x,y,ann=F,xaxt="n",yaxt="n") axis(1,-4:4,-4:4,line=2) #使用mgp调整刻度值位置 plot(x,y,ann=F,xaxt="n",yaxt="n") axis(1,-4:4,-4:4,mgp=c(3,2,0)) #使用padj调整刻度值位置 plot(x,y,ann=F,xaxt="n",yaxt="n") axis(1,-4:4,-4:4,padj=1)
5、其他
tick取FALSE时,坐标轴线和刻度线不画出;
lty表示线型,用在axis函数中表示坐标轴线型;
lwd表示线的粗细,用在axis函数中表示坐标轴线粗细;
lwd.ticks表示刻度线粗细。
三、title函数的用法
main、sub、xlab和ylab分别表示主标题、副标题、x轴标题和y轴标题;
cex.lab表示坐标轴标题的字号大小;
font.lab表示坐标轴标题的字体;
col.lab表示坐标轴标题的颜色;
其余参数和axis中用法一致。
x<-seq(-4,4,0.01) y<-x^2 par(mfrow=c(2,2),mar=c(4,4,1,1)) #无标题 plot(x,y,ann=F,xaxt="n",yaxt="n") axis(1,-4:4,-4:4) axis(2,seq(0,16,4),seq(0,16,4)) #使用title设置标题 plot(x,y,ann=F,xaxt="n",yaxt="n") axis(1,-4:4,-4:4,las=1) axis(2,seq(0,16,4),seq(0,16,4),las=1) title(xlab='x',ylab='y') #使用line调整位置 plot(x,y,ann=F,xaxt="n",yaxt="n") axis(1,-4:4,-4:4,las=1) axis(2,seq(0,16,4),seq(0,16,4),las=1) title(xlab='x',ylab='y',line=2) #调整颜色字体字号 plot(x,y,ann=F,xaxt="n",yaxt="n") axis(1,-4:4,-4:4,las=1) axis(2,seq(0,16,4),seq(0,16,4),las=1) title(xlab='x',ylab='y',col.lab=2,font.lab=4,cex.lab=2)
四、刻度间隔
plot函数会自动给出比较合理的刻度间隔,本质上是调用了pretty函数。
pretty(x,n=5,min.n=n%/%3,shrink.sml=0.75, high.u.bias=1.5,u5.bias=.5+1.5*high.u.bias, eps.correct=0,...)
x是一个序列,pretty函数会先对x取一个range,然后等分为大约n+1个间隔。
如果在作图时对系统自动给出的间隔不满意,可以调整n的值,用pretty函数自定义合适的间隔。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。