def try_fit(xdata, ydata, func, color, weights, extrap_range, txt_coords, txt_func): extrap = np.arange(extrap_range[0], extrap_range[1], 0.01) interp, params, R = a.curve_fit_xy(xdata, ydata, func, extrap, weights=weights) #plt.plot(xdata, ydata, ls='', marker='.', markersize=4) line = plt.plot(extrap, interp, ls='-', color=color) if show_fit_details: text = plt.text(txt_coords[0], txt_coords[1], txt_func(params)) else: text=0 return params, R, line, text
plt.sca(axs[0][1]) plt.plot([d[0] for d in data], [d[5] for d in data], color='b', ls='', marker='.') plt.sca(axs[1][1]) plt.plot([d[0] for d in data], [d[7] for d in data], color='k', ls='', marker='.') import PEPS.analysis as a fit_func = a.expic #fit_func2 = lambda x, b, c: b*x**c #fit_func3 = lambda x, b, c: np.log(b*x**c) extrapolate_pnts = np.arange(0, 11, 0.05) fit_info = {} # plt.sca(axs[0][0]) xs = [d[0] for d in data] ys = [d[1] for d in data] (curve_data, params, R) = a.curve_fit_xy(xs, ys, fit_func, extrapolate_pnts) l = plt.plot(extrapolate_pnts, curve_data, color='b', ls='-', linewidth=1) text = plt.text(2, 4, r'$\xi_{\infty}\approx '+str(IO.round_sig(params[0], 2))+'$') fit_info[(0, 0)] = dict(line=l, params=params, fit_func=fit_func, text=text) # (curve_data, params, R) = a.curve_fit_xy(xs, ys, fit_func2, extrapolate_pnts, init_guess=(1, 0.5)) # l = plt.plot(extrapolate_pnts, curve_data, color='g', ls='-', linewidth=1) # (curve_data, params, R) = a.curve_fit_xy(xs, ys, fit_func3, extrapolate_pnts, init_guess=(1, 3)) # l = plt.plot(extrapolate_pnts, curve_data, color='r', ls='-', linewidth=1) plt.sca(axs[0][1]) xs = [d[0] for d in data] ys = [d[5] for d in data] (curve_data, params, R) = a.curve_fit_xy(xs, ys, fit_func, extrapolate_pnts) l = plt.plot(extrapolate_pnts, curve_data, color='b', ls='-', linewidth=1) text = plt.text(4, 1, r'$\xi_{\infty}\approx '+str(IO.round_sig(params[0], 2))+'$')
y_data = [0, 1, k0n2b0[L],k0n3b0[L],k0n4b0[L]] plt.plot(x_data, y_data) for L in range(5, 9): x_data = [0, 1, 2, 3, 4] y_data = [0, 1, k0n2b0[L],k0n3b0[L],k0n4b0[L]] plt.plot(x_data, y_data, label = 'L = '+str(L), ls='.') for L in range(5, 9): x_data = [0, 1, 2, 3, 4] y_data = [0, 1, k0n2b0[L],k0n3b0[L],k0n4b0[L]] plt.plot(x_data, y_data, label = 'L = '+str(L), ls='') for L in range(5, 9): x_data = [0, 1, 2, 3, 4] y_data = [0, 1, k0n2b0[L],k0n3b0[L],k0n4b0[L]] plt.plot(x_data, y_data, label = 'L = '+str(L), marker = '*', ls='') from PEPS import analysis as a a.curve_fit_xy(x_data, y_data, lambda x, K:K(x^2-x)+x, np.arange(0, 4, 0.1)) a.curve_fit_xy(np.array(x_data), np.array(y_data), lambda x, K:K(x^2-x)+x, np.arange(0, 4, 0.1)) fit_points, params, R = a.curve_fit_xy(np.array(x_data), np.array(y_data), lambda x, K:K*(x^2-x)+x, np.arange(0, 4, 0.1)) fit_points, params, R = a.curve_fit_xy(np.array(x_data), np.array(y_data), lambda x, K:K*(x**2-x)+x, np.arange(0, 4, 0.1)) params fit_points zip(np.arange(0, 4, 0.1), fit_points) y_data fit_points, params, R = a.curve_fit_xy(np.array(x_data), np.array(y_data), lambda x, K:K*(x**2-x)+x, np.arange(0, 4.1, 0.1)) zip(np.arange(0, 4.1, 0.1), fit_points) params plt.plot(np.arange(0, 4.1, 0.1), fit_points, label = 'Fit', ls = ':') plt.plot(np.arange(0, 4.1, 0.1), fit_points, label = 'Fit', ls = '-', color='k') plt.xlim(-0.1,4.1) plt.ylim(-0.1, 7) plt.ylim(-0.2, 7)