如何在R基础绘图中设置分级y轴以缩小黄线与其余图形的间隔
R基础绘图调整Y轴与线条间距、自定义分层Y轴标签方案
你当前绘图顶部橙色(你所说的黄色)线条空隙过大的核心原因是手动设置的ylim上限99.5远大于实际数据最大值,同时默认Y轴没有做层级标签区分,调整方案如下:
调整逻辑
- 动态计算所有绘图数据的极值设置Y轴范围,仅保留极小的顶部边距,直接消除黄色线条上方的多余空白
- 关闭绘图默认Y轴输出,用
axis()函数自定义不同层级的刻度和标签,可按需给不同区间加分类标注
修改后可直接运行的代码
Site <- subset(data, Sites == "Bx") # 统计所有要绘制的变量的极值,动态设置Y轴范围 plot_vars <- c("A","D","G","L","M","T") max_val <- max(SiteB[,plot_vars], na.rm = TRUE) min_val <- 4 # 保留你原来的Y轴下限 # 绘图时关闭默认Y轴输出(yaxt="n") plot(SiteB$value,xlim = c(1,18),ylim=c(min_val, max_val*1.05),xlab="",ylab="",lwd=2,type = "n", asp = NA, yaxt="n") # 自定义分层Y轴标签,刻度位置和标签可根据你的数据需求调整 axis(side = 2, at = c(10,20,30, 50,60,70, 80,90), # 按层级分段设置刻度位置 labels = c("10","20","30", "50","60","70", "80","90"), # 对应刻度标签 las = 1 # 标签横向显示,不需要可删除 ) # 按需给不同层级加分类标注,不需要可删除 mtext(side = 2, text = "低区间", line = 2, at = 20, cex = 0.8, col = "gray50") mtext(side = 2, text = "中区间", line = 2, at = 60, cex = 0.8, col = "gray50") mtext(side = 2, text = "高区间", line = 2, at = 85, cex = 0.8, col = "gray50") # 原有线条绘制逻辑保持不变 lines(SiteB$value,SiteB$A,type="l", col="orange",lwd=2) lines(SiteB$value,SiteB$D, type="l", col="purple",lwd=2) lines(SiteB$value,SiteB$G,type="l", col="blue",lwd=2) lines(SiteB$value,SiteB$L,type="l",col="red",lwd=2) lines(SiteB$value,SiteB$M,type="l", col="black",lwd=2) #lines(SiteB$value,SiteB$S, type="l", col="magenta",lwd=2) lines(SiteB$value,SiteB$T,type="l",col="green",lwd=2)
补充说明
如果黄色线条的数值范围和其他线条差异过大,你还可以添加Y轴截断进一步缩小不同量级线条之间的空白间隔。
内容的提问来源于stack exchange,提问作者Stackoverflowuser
相关产品推荐
相关产品推荐

