#! /Usr/bin/python3 import scipy.optimize as opt import numpy as np import pandas as pd import matplotlib.pyplot as plt import VisTools.plotting as vt import uncertainties as unc import uncertainties.unumpy as unp plt.ioff() plt.style.use('bmh') fig, axarr = plt.subplots( 2, 1, figsize=(10, 8), gridspec_kw = {'height_ratios':[4,1]} ) plt.subplots_adjust(hspace=.5) data = pd.read_csv("./" + __file__[:-3].split("_")[1] + ".csv", comment="#") fits = np.array([]) errs = np.array([]) colors = np.array([]) data['dv_pit48/v'] /= 2 data['Dv'] = data['v_pit48/v'] - data['v_set/v'] data['Dvk'] = data['v_keith/v'] - data['v_set/v'] print(data) # fit to abs dist linfnc = lambda x,m,c: x*m+c def plot_and_linfit(col: str,fil, l: str): p = axarr[0].errorbar( data[fil]['v_set/v'], data[fil][col], alpha = 0.3, label=None, fmt='.', antialiased=True ) vals = vt.lm_plot( data[fil], 'v_set/v', col, None, 'dv_pit48/v', l, fig=axarr[0], color = p[0].get_color() ) return vals, p for i in range(8): val, p = plot_and_linfit( 'Dv', data.cycles == i, '$f_{}={{m:.3f}}\\cdot x{{c:+.3f}}V$'.format(i)) fits = np.append(fits, val[0]) #errs = np.append(errs, np.sqrt(pcov[0][0])) #colors = np.append(colors, p[0].get_color() ) plot_and_linfit('Dvk', data.cycles == 0, 'reference measurement') print(fits[0].n) for i in range(8): axarr[1].errorbar( i, fits[i].n, yerr = fits[i].s, fmt='.', #c = colors[i], ) axarr[0].set_xlabel('V$_{set}$/V') #axarr[0].set_title("PowerIt ADC Calibration: dependency on measurement cycles") axarr[0].set_ylabel('$\Delta$V$_{IN}$ / V') axarr[1].set_xlabel('scaler value') axarr[1].set_ylabel('$m = \Delta$Gain') axarr[0].legend( bbox_to_anchor=(0, -.29,1, 1), loc="lower left", mode="expand", borderaxespad=0, ncol=3) plt.savefig( "./" + __file__[:-3].split("_")[1] + ".pdf", dpi=1000, bbox_inches='tight')