我有以下代码,我打算阅读并绘制许多不同文件中的许多曲线。 “阅读和绘图”已经开始运作良好。
问题在于,现在我想在同一个图中为所有曲线拟合。这段代码已经设法适应曲线,但输出全部在一个数组中,我无法绘制它,因为我无法将它分开。
#!/usr/bin/python
import matplotlib.pyplot as plt
from numpy import exp
from lmfit import Model
def read_files(arquivo):
x = []
y = []
abscurrent = []
time = []
data = open(arquivo, 'r')
headers = data.readlines()[60:]
for line in headers:
line = line.strip()
X, Y, ABS, T = line.split('\t')
x.append(X)
y.append(Y)
abscurrent.append(ABS)
time.append(T)
data.close()
def J(x, j, n):
return j*((exp((1.6e-19*x)/(n*1.38e-23*333)))-1)
gmod = Model(J)
result = gmod.fit(abscurrent, x=x, j=10e-10, n=1)
return x, y, abscurrent, time
print(result.fit_report())
当我要求打印“文件”result.best_fit
时,在lmfit中最适合该曲线,我得到12次此结果(我有12条曲线),具有不同的值:
- Adding parameter "j"
- Adding parameter "n"
[ 4.30626925e-17 3.25367918e-14 9.60736218e-14 2.20310475e-13
4.63245638e-13 9.38169958e-13 1.86480698e-12 3.67881758e-12
7.22634738e-12 1.41635088e-11 2.77290634e-11 5.42490983e-11
1.06108942e-10 2.07520542e-10 4.05768903e-10 7.93323537e-10
1.55126521e-09 3.03311029e-09 5.93085363e-09 1.16032067e-08
2.26884736e-08 4.43641560e-08 8.67362753e-08 1.69617697e-07
3.31685858e-07 6.48478168e-07]
- Adding parameter "j"
- Adding parameter "n"
[ 1.43571772e-16 1.00037588e-13 2.92349492e-13 6.62623404e-13
这意味着代码正在正确计算拟合,我只需要以某种方式将此输出分开,以便用它们的曲线绘制每个输出。 []
之间的每组值都是我想要以我可以绘制它的方式分开的。
答案 0 :(得分:0)
我看不到您发布的代码如何产生您的输出。我没有看到print()函数打印出26个值的数组,但可以想象这可能是列表x
,y
和abscurrent
的长度 - 它是不是print(result.fit_report())
的输出,我也看不到结果。
我没有看到任何暗示你有12条独立曲线的东西。
此外,result.best_fit
不是文件,而是数组。