[リンク内容]Pythonでピークフィッテイング
(url)https://qiita.com/kon2/items/6498e66af55949b41a99
こちらのサイトと全く同じコードと、全く同じサンプルファイルを用意して実行したのですが、何故かエラーは出ないのに結果が出力されません。
何か原因が分かる方いらっしゃいますでしょうか。
コードはサイトと全く同じですが一応以下に書いておきます。
python
%matplotlib inline from scipy.optimize import curve_fit import numpy as np import matplotlib.pyplot as plt import matplotlib.cm as cm import pandas as pd dataset = pd.read_csv('sample.csv') x = dataset['x'] y = dataset['y'] def fit_plot(x, *params): num_func = int(len(params)/3) y_list = [] for i in range(num_func): y = np.zeros_like(x) param_range = list(range(3*i,3*(i+1),1)) amp = params[int(param_range[0])] ctr = params[int(param_range[1])] wid = params[int(param_range[2])] y = y + amp * np.exp( -((x - ctr)/wid)**2) + params[-1] y_list.append(y) return y_list #初期値リストの結合 guess_total = [] for i in guess: guess_total.extend(i) guess_total.append(background) popt, pcov = curve_fit(func, x, y, p0=guess_total) fit = func(x, *popt) plt.scatter(x, y, s=20) plt.plot(x, fit , ls='-', c='black', lw=1) y_list = fit_plot(x, *popt) baseline = np.zeros_like(x) + popt[-1] for n,i in enumerate(y_list): plt.fill_between(x, i, baseline, facecolor=cm.rainbow(n/len(y_list)), alpha=0.6)
まだ回答がついていません
会員登録して回答してみよう