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

scipy curve_fit拟合参数后绘图出现'int对象不可调用'TypeError问题

错误原因
  • 核心触发原因是变量与函数命名冲突导致的调用错误:你代码中已经将temp_range定义为数值类型变量(同时也是自定义函数的参数名),但绘图行中你写了temp_range(...),将数值变量当作函数进行调用,直接触发'int' object is not callable报错。
  • 拟合曲线生成逻辑错误:你不需要用temp_range包裹自定义函数来生成拟合值,只需将拟合得到的参数popt和待计算的温度序列直接传入boatman_temperature_function即可得到对应生长率结果。
  • 隐藏问题:你标签格式化字符串只设置了3个占位符,但popt包含5个拟合参数,直接% tuple(popt)后续会触发参数数量不匹配的报错。
  • 额外说明:你代码中np.sin的输入是乘以np.pi后的弧度值,符合numpy.sin的输入要求,TODO注释的问题无需调整。
修正方案

首先确认你调用curve_fit的入参正确:curve_fit的第二个参数应为自变量(温度列),第三个参数应为因变量(生长率列),如果你现在传的min_temp/temp_range是变量名写错了需要先修正,再执行后续绘图代码:

# 生成14~34范围内的连续温度值,用于绘制平滑拟合曲线
x_fit = np.linspace(14, 34, 100)
# 传入拟合参数计算对应生长率
y_fit = boatman_temperature_function(x_fit, *popt)

# 绘图
plt.scatter(df['Temperature'], df['Growth rate'], label='原始观测值')
plt.plot(x_fit, y_fit, 'g-', label=f'拟合参数: 最大生长率={popt[0]:.3f}, 最低温度={popt[1]:.3f}, 温度范围={popt[2]:.3f}, 偏度={popt[3]:.3f}, 峰度={popt[4]:.3f}')
plt.xlabel('Temperature')
plt.ylabel('Growth rate')
plt.legend()
plt.show()

内容的提问来源于stack exchange,提问作者Sam Coleman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:39:04