#!/usr/bin/env gnuplot -c
# == DEFINICIONS ==
outputfile = '../output/2_3_1' # Nom de la imatge resultant (sense extensió)
datafile = '../data/2_3_1.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 '$I_c$'
set ylabel '$I_p \, (\si{\milli\ampere})$'

# 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('$I_p(I_c) = %.'.sd_error_a.'f I_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
