tprak

Theoretical Physics Practical Training
git clone git://popovic.xyz/tprak.git
Log | Files | Refs

my_plot.py (2571B)


      1 #!/usr/bin/env python3.9
      2 
      3 import numpy as np
      4 import sympy as sp
      5 import matplotlib.pyplot as plt
      6 from scipy.special import gammaincc
      7 
      8 from model import *
      9 
     10 import matplotlib.pylab as pylab
     11 params = {'legend.fontsize': 'x-large',
     12           'figure.figsize': (15, 5),
     13          'axes.labelsize': 'x-large',
     14          'axes.titlesize':'x-large',
     15          'xtick.labelsize':'x-large',
     16          'ytick.labelsize':'x-large'}
     17 pylab.rcParams.update(params)
     18 
     19 def my_plot(name, x_data, y_data, p, dp, chi_sq, sigma):
     20 
     21 #    for i in range(len(p)):
     22 #        print(f'{p[i]}\t\\pm {dp[i]}')
     23 
     24     dof = len(x_data) - len(p)
     25     p_value = 1 - gammaincc(chi_sq[-1]/2, dof/2)
     26     chi_min = chi_sq[-1]/dof
     27 
     28     with open(f'./results/{name}.txt', 'w+') as f:
     29         for i in range(len(p)):
     30             f.write(f'{round(p[i]*1000, 2)}\t\\pm {round(dp[i]*1000, 2)}\n')
     31 
     32         f.write(f'chi_sq_min_dof = {chi_min}\n')
     33         f.write(f'p_value = {p_value}\n')
     34 
     35     x_model = np.linspace(x_data[0], x_data[-1], 500)
     36 
     37     x = sp.symbols('x')
     38     la_mod = model(x, *p)
     39     la_mod = sp.lambdify(x, la_mod, modules=['numpy', {'Heaviside': np.heaviside}])
     40     y_model = la_mod(x_model)
     41 
     42     plt.figure(figsize=[10, 7])
     43     plt.errorbar(x_data, y_data, yerr=sigma, c='black', fmt='.k', label=f'{name}')
     44     plt.plot(x_model, y_model, c='red', label='Fit')
     45 
     46 #     p, dp = np.round(p, 5), np.round(dp, 3)
     47 
     48     #plt.annotate(r'$M_{\rho} = $' + f'({p[0]}' + r'$\pm$' + f'{dp[0]}) GeV', (0.2, 40))
     49     #plt.annotate(r'$\Gamma_{\rho} = $' + f'({p[1]}' + r'$\pm$' + f'{dp[1]}) GeV', (0.2, 38))
     50     #plt.annotate(r'$M_{\omega} = $' + f'({p[2]}' + r'$\pm$' + f'{dp[2]}) GeV', (0.2, 36))
     51     #plt.annotate(r'$\Gamma_{\omega} = $' + f'({p[3]}' + r'$\pm$' + f'{dp[3]}) GeV', (0.2, 34))
     52     #plt.annotate(r'$\epsilon_{\omega} = $' + f'({p[4]}' + r'$\pm$' + f'{dp[4]}) GeV', (0.2, 32))
     53     #plt.annotate(r'$a = $' + f'({p[5]}' + r'$\pm$' + f'{dp[5]}) GeV', (0.2, 30))
     54     #plt.annotate(r'$b = $' + f'({p[6]}' + r'$\pm$' + f'{dp[6]}) GeV', (0.2, 28))
     55     #plt.annotate(r'$c = $' + f'({p[7]}' + r'$\pm$' + f'{dp[7]}) GeV', (0.2, 26))
     56 
     57     plt.legend(loc='best')
     58     plt.ylabel(r'$|F_{\pi}^V(s)|^2|$')
     59     plt.xlabel(r'$\sqrt{s}$[GeV]')
     60 
     61     plt.savefig(f'./plots/{name}.png')
     62     plt.close()
     63 
     64 
     65 
     66     #plt.figure(figsize=[10, 7])
     67     #plt.plot(chi_sq/dof, p_value, label=r'$\chi^2_{min}/dof = $' + f'{round(chi_sq[-1]/dof, 3)}')
     68     #plt.title(r'$\chi^2$'+f'-{name}')
     69     #plt.xlabel(r'$\chi^2/dof$')
     70     #plt.ylabel('p-value')
     71     #plt.legend(loc='best')
     72 
     73     #plt.savefig(f'./plots/{name}-chisq.png')
     74     #plt.close()