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

如何在ggplot中绘制二次平台曲线?解决绘图报错问题

解决ggplot中geom_smooth绘制nls二次平台曲线的报错问题

问题背景

已生成数据集并拟合二次平台nls模型,但调用geom_smooth(method="nls")时出现如下报错,无法显示拟合的二次平台曲线:

Warning message:
Computation failed in `stat_smooth()`
Caused by error in `getInitial.default()`:
! no 'getInitial' method found for "function" objects

错误原因

  • geom_smooth的formula参数需传入公式表达式,而非已拟合的nls对象(fm)
  • 自定义的Mean函数属于用户自定义模型,ggplot无法自动获取模型的初始参数值,导致getInitial函数触发报错

解决方案

方案1:直接在geom_smooth中配置nls参数

在geom_smooth中明确指定模型公式、自定义函数,并通过method.args传入初始参数值(可使用已拟合模型的参数估计值作为初始值,提升拟合稳定性):

# 定义二次平台函数
Mean <- function(x, alpha, beta, gamma) {
  pmin(alpha + beta*x + gamma*x*x, alpha - beta^2/(4 * gamma))
}

# 绘图代码
ggplot(data=dataA, aes(x=GN, y=Yield))+
  geom_smooth(method="nls", 
              formula=y ~ Mean(x, alpha, beta, gamma),
              method.args = list(start = list(alpha = -5, beta = 19, gamma = -0.8)),
              level=0.95, se=FALSE, linetype=1, size=1, color="Red") +
  geom_point(col="Black", size=4) +
  scale_x_continuous(breaks = seq(0,15,3), limits = c(0,15)) +
  scale_y_continuous(breaks = seq(0,120,20), limits = c(0,120)) +
  labs(x="籽粒数量", y="产量") +
  theme_grey(base_size=17, base_family="serif")+
  theme(axis.line= element_line(size=0.5, colour="black"))+
  windows(width=5.5, height=5)

方案2:先预测拟合值,再用geom_line绘制

利用已拟合好的fm模型生成平滑的预测数据,再通过geom_line添加曲线,无需重复拟合模型:

# 生成覆盖原x范围的平滑序列
new_x <- seq(min(dataA$GN), max(dataA$GN), length.out=100)
# 基于拟合模型预测y值
pred_y <- predict(fm, newdata = list(x=new_x))
# 构建预测数据集
pred_data <- data.frame(GN=new_x, Yield=pred_y)

# 绘图
ggplot(data=dataA, aes(x=GN, y=Yield))+
  geom_point(col="Black", size=4) +
  geom_line(data=pred_data, color="Red", size=1, linetype=1) +
  scale_x_continuous(breaks = seq(0,15,3), limits = c(0,15)) +
  scale_y_continuous(breaks = seq(0,120,20), limits = c(0,120)) +
  labs(x="籽粒数量", y="产量") +
  theme_grey(base_size=17, base_family="serif")+
  theme(axis.line= element_line(size=0.5, colour="black"))+
  windows(width=5.5, height=5)

内容的提问来源于stack exchange,提问作者J.K Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:20:38