如何最小化R语言绘图中刻度与标签的间距?
调整R基础绘图中刻度与标签的间距
Hey Olli, 很高兴能帮你搞定这个刻度和标签间距的问题!针对你图里标记的x轴(1处)和y轴(2处),在R的基础绘图系统里,有两个实用的方法可以调整:
1. 用axis()函数的padj参数精细调整
这个参数直接控制标签相对于刻度线的位置,不同轴方向效果不一样:
- x轴(底部的K-Value轴):
padj管的是标签的垂直位置,数值越大,标签越往下挪(离刻度线更远);默认是0.5(标签居中对齐刻度)。你可以在调用axis(1)时加上这个参数,比如:axis(1, at=1:29,labels=seq(2,30,1), padj=1) # 让标签远离刻度往下移 - y轴(左侧的RMSE轴):因为你设置了
las=1让标签水平显示,padj会控制标签的水平位置,数值越大,标签越往右移(离刻度线更远)。如果你没显式调用axis(2),可以补一句:axis(2, padj=1) # 调整y轴标签与刻度的间距
2. 用par()的mgp参数全局控制
mgp是个长度为3的向量,分别管轴标题、轴标签、刻度线和轴线的距离(单位是line,默认是c(3,1,0)):
- 第一个值:轴标题的距离(对应你代码里
title()的line参数) - 第二个值:轴标签的距离
- 第三个值:刻度线的位置(0是刚好在轴线上,负数往外,正数往里)
要增大刻度和标签的间距,你可以把第二个值调大,让标签离轴线更远。比如把par()改成这样:
par(mfrow=c(5,2), oma=c(0,0,2,0), las=1, mar=c(3,5,2,1), cex.lab=0.9, cex.axis=0.7, mgp=c(3, 1.5, 0))
这样标签距离轴线1.5line,刻度线在0line,间距就比默认的1line宽多了,而且是全局生效,所有子图都会跟着变。
结合你的代码的完整示例
给你整合好的代码参考,同时用了全局mgp和x轴的padj:
par(mfrow=c(5,2), oma=c(0,0,2,0), las=1, mar=c(3,5,2,1), cex.lab=0.9, cex.axis=0.7, mgp=c(3, 1.5, 0)) plot(sapply(ERRORS.train.fast[[1]],mean),main="Pipe 63569",type="l", ylab="", xlab="",xaxt="n") axis(1, at=1:29,labels=seq(2,30,1), padj=1) title(ylab= "RMSE (-)",line=3) title(xlab= "K-Value",line=2)
如果想要更精准的控制,你可以单独给每个轴调整参数,灵活组合就行~
内容的提问来源于stack exchange,提问作者Olli
相关产品推荐
相关产品推荐

