[リンク内容]Pythonでピークフィッテイング
(url)https://qiita.com/kon2/items/6498e66af55949b41a99
こちらのサイトと全く同じコードと、全く同じサンプルファイルを用意して実行したのですが、何故かエラーは出ないのに結果が出力されません。
何か原因が分かる方いらっしゃいますでしょうか。
コードはサイトと全く同じですが一応以下に書いておきます。
python
1%matplotlib inline 2from scipy.optimize import curve_fit 3import numpy as np 4import matplotlib.pyplot as plt 5import matplotlib.cm as cm 6import pandas as pd 7 8dataset = pd.read_csv('sample.csv') 9x = dataset['x'] 10y = dataset['y'] 11def fit_plot(x, *params): 12 num_func = int(len(params)/3) 13 y_list = [] 14 for i in range(num_func): 15 y = np.zeros_like(x) 16 param_range = list(range(3*i,3*(i+1),1)) 17 amp = params[int(param_range[0])] 18 ctr = params[int(param_range[1])] 19 wid = params[int(param_range[2])] 20 y = y + amp * np.exp( -((x - ctr)/wid)**2) + params[-1] 21 y_list.append(y) 22 return y_list 23#初期値リストの結合 24guess_total = [] 25for i in guess: 26 guess_total.extend(i) 27guess_total.append(background) 28 29popt, pcov = curve_fit(func, x, y, p0=guess_total) 30 31fit = func(x, *popt) 32plt.scatter(x, y, s=20) 33plt.plot(x, fit , ls='-', c='black', lw=1) 34 35y_list = fit_plot(x, *popt) 36baseline = np.zeros_like(x) + popt[-1] 37for n,i in enumerate(y_list): 38 plt.fill_between(x, i, baseline, facecolor=cm.rainbow(n/len(y_list)), alpha=0.6)
回答1件
あなたの回答
tips
プレビュー