【发布时间】:2021-02-15 08:55:52
【问题描述】:
我有一个数据图,并对其应用了线性拟合,但是我不确定为什么,但拟合线远离数据本身。我将如何对这条线施加限制,使其恰好适合我的数据(最好也让数据成为图表的焦点!)
图形输出和代码如下:
plt.plot(np.log(ts), amps, "1", ms=5, label="Schmitt Analysis (Amplitude against Log(Time))")
##Plot Linear Fit
y1, r, *_ = np.polyfit(amps, np.log(ts), 1, full=True)
f1 = np.poly1d(y1)
plt.plot(amps, f1(amps), label=f"linear ($\chi^2$ = {r[0]:0.2f})")
plt.xlabel("Log(Time)")
plt.ylabel("Amplitude")
plt.title("Schmitt Analysis (Amplitude against Log(Time))")
plt.xlim(0,10)
plt.ylim(-40,80)
plt.legend()
plt.savefig('A_Schmitt.jpg')
实际使用的数据:
log(ts) = [-inf 2.89037176 3.58351894 3.98898405 4.49980967 4.68213123 4.83628191 4.9698133 5.08759634 5.19295685 5.28826703 5.37527841 5.45532112 5.52942909 5.59842196 5.7235851 5.78074352 5.83481074 5.9348942 6.02586597 6.06842559 6.10924758 6.1484683 6.22257627 6.25766759 6.32435896 6.38687932 6.41673228 6.44571982 6.50128967 6.52795792 6.5539334 6.71901315 6.78219206]
安培= [77.78630383833547,62.92926582239441,63.84025706577048,55.489066870438165,38.60797989548756,40.771390484048545,14.679073842876978,33.95959972488966,29.41960790300141,32.93241034391399,30.927428194781815,31.086396885182356,21.52771899125612,4.27684299160886,6.432975528727562,7.500376934048583,18.730555740591637,4.355896959987761,11.677509915219987,12.865482314301719,0.6120306267606219,12.614420497451556, 2.2025029753442404,9.447046999592711,4.0688197216393425,0.546672901996845,1.12780050608251,2.2030852358874635,2.202804718915858,0.5726686031033587,0.5465322281618783,0.5185100682386156,0.575055917739342,0.5681697592593679]
注意到我犯了一个错误,我设法让图表更新了一点,但现在拟合完全失败了。
我也将上面的代码更新到了新版本。
【问题讨论】:
-
如果您可以发布一些有用的示例数据。
-
全部完成。还添加了对代码/图表的更新
标签: python numpy matplotlib curve-fitting