많은 코드를 읽고 커브를 그리는 데 다음 코드가 있습니다. "독서와 플로팅"은 이미 꽤 효과적입니다.lmfit matplot - 동시에 여러 다른 파일의 많은 커브를 피팅합니다.
문제는 이제 같은 플롯에서 모든 커브의 피팅을 만들고 싶다는 것입니다. 이 코드는 이미 커브를 맞추기 위해 관리되지만 출력은 하나의 배열에 모두 들어 있습니다. 분리 할 수 없기 때문에 출력 할 수 없습니다. 나는 lmfit에서 그 곡선에 가장 적합한을 줄 것 "파일"result.best_fit
을 인쇄 할 물어 보면
#!/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())
, 나는 다른 값으로, 12 번이 결과를 (I 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
이것은 코드가 피팅을 올바르게 계산한다는 것을 의미하며,이 출력을 어떻게 든 커브로 그려 내야합니다. []
사이의 각 값 집합은 내가 그릴 수있는 방식으로 분리하려는 것입니다.
인쇄물이이 코드에 없으므로 시도했음을 의미합니다. :) 필자는 각 커브에 대해'result01'을 gmod.fit (abscurrent01, x = x01, j = 10e-10, n = 1)로 설정 한 후'결과 '와 관련된 코드의 일부를 추가하여 해결했습니다. 그렇게함으로써 나는'result01.best_fit'를 호출 할 수 있었다. 너무 길기 때문에 내가 게시 한 코드는 완전하지 못했다. 그러나 그것이 의미하는 바를 생성한다. –
미안하지만 나는 여전히 너를 이해하지 못해. 그러나 당신이 가진 모든 문제를 해결했음을 기뻐합니다. 그렇지 않은 경우 실제 코드의 완전한 최소 예제를 게시하십시오. –