#!/usr/bin/env gnuplot -c
# == DEFINICIONS ==
outputfile = '../output/2_3_2' # Nom de la imatge resultant (sense extensió)
datafile = '../data/2_3_2.dat' # Nom del fitxer de dades que es vol usar

# == CONFIGURACIÓ DE L'OUTPUT PEL LATEX ==
set terminal cairolatex size 10cm, 7.5cm font ",10"
set output outputfile.'.tex'

# == CONFIGURACIÓ DEL PLOT ==
set xlabel '$V_c$'
set ylabel '$V_p \, (\si{\volt})$'

# Opcions per la llegenda:
set key above
set key spacing 1.5
set key font ",8.5"

# == CONFIGURACIÓ DEL FIT ==
set fit quiet

f(x) = a*x + b # Funció a fitar
fit f(x) datafile u 1:2 via a, b # Fem el fit de les dades

# Això s'usa per obtenir el valor del coeficient de correlació "r", que estarà
# guardat a la var. "STATS_correlation"
stats datafile u 1:2 name "STATS" nooutput

# Funció per obtenir els dígits significatius d'una expressió
f_sd(n, i) = (int(n) == 0 ? f_sd(n*10, i+1) : (int(n) == 1 ? i+1 : i))
significant_digits(n) = f_sd(n - 10*int(n/10), 0)

significant_digits_r(n) = (n == 1 ? 0 : significant_digits(1 - abs(n)))

error_a = STATS_slope_err
sd_error_a = significant_digits(error_a)
error_b = STATS_intercept_err
sd_error_b = significant_digits(error_b)
r = STATS_correlation
sd_r = significant_digits_r(r)

print("=== ".datafile." ===")
print(sprintf('delta(a) = %.'.sd_error_a.'f, sd=%.0f', error_a, sd_error_a))
print(sprintf('delta(b) = %.'.sd_error_b.'f, sd=%.0f', error_b, sd_error_b))

# Aquesta funció escriu, a partir dels valors del paràmetres a, b i r,
# l'equació de la regressió:
title_f(a, b, r) = sprintf('$V_p(V_c) = %.'.sd_error_a.'f V_c + (%.'.sd_error_b.'f)$, $r = %.'.sd_r.'f$', a, b, r);

plot datafile u 1:2 t "Dades experimentals" w p, f(x) t title_f(a, b, r)

# == CONFIGURACIÓ DE L'OUTPUT PER SVG ==
# Això ho uso per generar també una imatge de previsualització que puc carregar
# a l'ordinador per veure més o menys com a sortit el plot sense haver
# d'inserir-ho al LaTeX per veure-ho.
set terminal svg dashed size 600, 600 font "Computer Modern,Tinos,Helvetica,15"
set output outputfile.'.svg'
replot
