You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ggplot2中调用drm绘制四参数拟合曲线不光滑如何解决

四参数拟合曲线不光滑问题排查与修复

问题根因

拟合线条出现折角、不光滑是geom_smooth默认计算逻辑导致的:

  • 未手动指定预测点数量时,geom_smooth默认仅提取原始数据集中存在的x轴(浓度)值计算拟合值,再用直线段逐点连接
  • 代码中对x轴做了log2对数转换,原始浓度点在对数尺度下间距不均匀,长线段连接就会呈现明显折角,视觉上不光滑

修复方案

在geom_smooth中添加n参数,手动指定拟合线生成的预测点总数,让预测点足够密集,连线后自然形成光滑曲线。通常设置n=200即可满足出版级的光滑度需求,该参数仅调整线上点的密度,不会改变四参数拟合的结果本身。

修改后的核心绘图代码

仅需替换原有geom_smooth行即可,其余代码无需改动:

# 其余代码保持不变,仅修改geom_smooth部分
ggplot(data = df,
       aes(Concentrations, Growth, col = Strains, shape = Strains)) + 
  # 新增n=200参数,生成密集预测点实现光滑曲线
  geom_smooth(method = drm, method.args = list(fct = L.4()), se = F, size = 1, n = 200) +
  geom_point(size = 4, alpha = 0.8)+ 
  theme_classic() + coord_trans(x="log2") + 
  scale_color_manual(name = "Strains", values=c("#000000", "#099963", "#804003")) + 
  scale_shape_manual(name = "Strains", values = c(17, 15, 19))+
  theme(text = element_text(size = 16), axis.text = element_text(size = 16), 
        axis.line =element_line(size=1),
        legend.position = c(0.8, 0.6)) +
  scale_x_continuous(labels = lab_x, breaks = brk_x) + xlab("Concentration (µg/ml)") + ylab("Growth (%)")

额外注意事项

当前x轴标签第一个值设为0,但对应断点配置的是0.1,需要注意0在log2转换下无数学意义,建议确认最低浓度的实际取值,避免运行时弹出缺失值警告。


内容的提问来源于stack exchange,提问作者Trinh Phan-Canh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 01:24:23