R语言plot绘制多X轴图表时第三轴超出画布显示不全如何修复
问题原因
R基础绘图默认预留的底部边距仅能容纳2个左右的X轴,将第三个X轴设置在line=5位置时,轴和对应标签已经超出默认边距的显示范围,因此会被页面边界裁切,无法完整展示。
修复方法
在绘图前通过par()函数调大底部边距的预留空间即可,不需要修改已经写好的轴、散点绘制逻辑。mar是控制绘图四边距的参数,接收长度为4的数值向量,四个值按顺序对应下、左、上、右四个方向的边距(单位为文本行高),系统默认值为c(5,4,4,2),只需要把第一个值(底部边距)调大到7~8,就足够容纳3个X轴和对应标签。
修正后完整可运行代码
# 调整边距,加大底部预留空间 par(mar = c(8, 4, 4, 2)) # 第一个X轴(红色) plot(1:10,1:10,bty="n",col="red",pch=16,axes=FALSE,xlab="",ylab="") axis(2,0:11,las=1) axis(1,0:11,line=1,col="red",col.ticks="red",col.axis="red") mtext("Label 1",1,line=1,at=0.2,col="red") # 第二个X轴(蓝色) points(rnorm(10,50,20)/10, rnorm(10,5,2),pch=16, col="blue" ) axis(1,0:11,labels=0:11*10,line=3,col="blue",col.ticks="blue",col.axis="blue") mtext("Label 2",1,line=3,at=0.2,col="blue") # 第三个X轴(黑色) points(rnorm(10,50,20)/10, rnorm(10,5,2),pch=16, col="black" ) axis(1,0:11,labels=0:11*10,line=5,col="black",col.ticks="black",col.axis="black") mtext("Label 3",1,line=5,at=0.2,col="black")
补充调整说明
- 如果觉得三个轴的间距太宽,可以适当缩小每个轴的
line参数间隔,比如把第三个轴的line从5改成4,对应的底部边距也可以适当调小(比如改成c(7,4,4,2))。 - 绘图完成后如果要恢复默认边距设置,运行
par(mar = c(5,4,4,2))即可,不会影响后续其他绘图的显示效果。
内容的提问来源于stack exchange,提问作者Rel_Ai
相关产品推荐
相关产品推荐

