【发布时间】:2018-09-22 00:33:45
【问题描述】:
我正在尝试使用来自 scipy 的 curve_fit 函数将一些样本数据拟合到一个符号图中。我的最佳拟合曲线在我遵循的代码中看起来不错,但是我遇到了 2 条 sigma 曲线的问题,我想同时显示最佳拟合曲线和灰色填充曲线。我的代码如下所示:
import sys
import os
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import scipy.optimize as optimization
M = np.array([-2, -1, 0, 1, 2, 3,4])
Y_z = np.array([0.05, 0.2, 3, 8, 50, 344, 2400 ])
# curve fit linear function
def line(x, a, b):
return a*x+b
popt, pcov = curve_fit(line, M, np.log10(Y_z)) # change here
# plotting
plt.semilogy(M , Y_z, 'o')
plt.semilogy(M, 10**line(M, popt[0], popt[1]), ':', label = 'curve-fit')
# plot 1 sigma -error
y1 = 10**(line(M, popt[0] + pcov[0,0]**0.5, popt[1] - pcov[1,1]**0.5))
y2 = 10**(line(M, popt[0] - pcov[0,0]**0.5, popt[1] + pcov[1,1]**0.5))
plt.semilogy(M, y1, ':')
plt.semilogy(M, y2, ':')
plt.fill_between(M, y1, y2, facecolor="gray", alpha=0.15)
plt.xlabel(r"$\log X$")
plt.ylabel('Y')
plt.legend()
plt.show()
【问题讨论】:
-
你有什么问题?
-
我不认为我可以绘制 2 条 sigma 方差曲线和最佳拟合曲线。曲线与最佳拟合相交,我没想到
-
您应该编辑您的问题以包含您的具体问题
标签: python numpy matplotlib scipy curve-fitting