#!/usr/bin/env gnuplot -c
# == DEFINICIÓ DELS NOMS DELS ARXIUS ==
outputfile = ARG2 # Nom de la imatge resultant (sense extensió)
datafile = ARG1 # Nom del fitxer de dades que es vol usar

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

# == CONFIGURACIÓ DEL PLOT ==
set xlabel "$\\Delta T \\, (\\si{\\celsius})$"
set ylabel "$Mg - F_D \\, (\\si{\\newton})$"

# Opcions per la llegenda:
set key above
set key spacing 1.5

# == CONFIGURACIÓ DEL FIT ==

f(x) = a*x + b # Funció a fitar
fit f(x) datafile u 5:4 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. "A_correlation"
stats datafile u 5:4 name "A"

# 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('$(Mg - F_D)(\Delta T) = %.1f \Delta T + (%.1f)$, $r = %.2f$', a, b, r);

plot datafile u 5:4:(0.4):(2) t "Dades experimentals" w xyerr, f(x) t title_f(a, b, A_correlation)

# == 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
