R语言drc包绘图问题:x轴首两个数据点间存在过大间隙
解决drc包绘图时x轴0与10数据点间的间隙问题
问题原因
你遇到的间隙问题,本质是drc包默认的线性x轴刻度会优先覆盖大跨度的浓度范围(0到500),导致低浓度区间(0、10)的刻度稀疏,视觉上显得间隙过大。手动叠加刻度的方式没有替换默认轴,因此无法解决问题。
解决方案1:手动定制线性坐标轴
通过关闭默认坐标轴,手动指定包含低浓度值的刻度点,让0和10的位置有明确刻度,消除视觉间隙:
# 拟合三参数log-logistic模型 hatch <- drm(ha_.~leachate, data=data, fct = LL.3()) # 绘制曲线时不显示默认坐标轴 plot(hatch, xlim=c(0,500), ylim=c(0,100), xlab="Leachate Concentration (%)", ylab="Hatch Rate (%)", col = color1, axes = FALSE) # 添加置信区间 plot(hatch, type="confidence", col = color1, add=TRUE) # 手动绘制x轴,包含0、10等低浓度刻度 axis(1, at = c(0, 10, 25, 50, 75, 100, 200, 300, 400, 500)) # 绘制y轴 axis(2) # 补画图形边框 box()
解决方案2:使用对数x轴(推荐)
LL.3是log-logistic模型,这类模型在对数x轴上的曲线更平滑,能更好展示低浓度区间的细节,同时压缩高浓度区间的冗余空间:
hatch <- drm(ha_.~leachate, data=data, fct = LL.3()) # 绘制带对数x轴的曲线(注意对数轴不能包含0,故xlim从0.1开始) plot(hatch, xlim=c(0.1,500), ylim=c(0,100), xlab="Leachate Concentration (%)", ylab="Hatch Rate (%)", col = color1, log = "x") # 添加置信区间 plot(hatch, type="confidence", col = color1, add=TRUE) # 可选:手动设置对数轴刻度,适配你的数据 axis(1, at = c(1, 10, 50, 100, 200, 500))
如果必须在对数轴上显示0点,可以在绘图后用points(0, predict(hatch, newdata=data.frame(leachate=0)))手动添加。
内容的提问来源于stack exchange,提问作者Miranda Jackson
相关产品推荐
相关产品推荐

