# -*- coding: utf-8 -*- """ Created on Wed Aug 31 13:24:08 2016 @author: jbrody """ import numpy as np import matplotlib.pyplot as plt, pandas as pd from scipy.optimize import curve_fit from sklearn.metrics import r2_score print ('Your x data and y data should appear as columns in Excel\n') input("Copy your x data to clipboard (CTRL-C) and press Enter.") x=pd.read_clipboard(header=None) x=np.array(x).T[0] input("Copy your y data to clipboard (CTRL-C) and press Enter.") y=pd.read_clipboard(header=None) y=np.array(y).T[0] def func(x,k,R,a): return popt, pcov = curve_fit(func, x, y,bounds=([0,0,0],[np.inf,np.inf,np.inf])) plt.plot(x,y,'o',label="measured data") yfit=func(x,*popt) yplot=func(np.linspace(np.min(x),np.max(x),100),*popt) plt.plot(np.linspace(np.min(x),np.max(x),100),yplot,label="theoretical fit") perr = np.sqrt(np.diag(pcov)) r2=r2_score(y, yfit) print("The fitting parameters are",popt) print("The uncertainties in the fitting parameters are",perr) print("The coefficient of determination is", r2) plt.legend()