diff --git a/p1/graphs/graph.gnu b/p1/graphs/graph.gnu
new file mode 100755
index 0000000..e38dfea
--- /dev/null
+++ b/p1/graphs/graph.gnu
@@ -0,0 +1,88 @@
+#!/usr/bin/env gnuplot -c
+# == DEFINICIONS ==
+outputfile = ARG5 # Nom de la imatge resultant (sense extensió)
+datafile = ARG1 # Nom del fitxer de dades que es vol usar
+filederiva = ARG2
+fileahundred = ARG3
+filefiftythree = ARG4
+error_sist_b = 0.001 # Error sistemàtic en l'eix y
+
+# Set to 1 for linear fitting.
+# Set to 2 for no fitting.
+linear = 2
+
+# == CONFIGURACIÓ DE L'OUTPUT PEL LATEX ==
+set terminal cairolatex size 7.4cm, 6cm
+set output outputfile.'.tex'
+
+# == CONFIGURACIÓ DEL PLOT ==
+set xlabel "$t \\, (\\si{\\second})$"
+set ylabel "$\\varepsilon \\, (\\si{\\milli\\volt})$"
+
+set autoscale yfixmin
+set autoscale xfixmax
+
+# Opcions per la llegenda:
+set key above
+set key spacing 1.5
+
+# == CONFIGURACIÓ DEL FIT ==
+set fit quiet
+
+# 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 - n))
+
+if (linear == 1) {
+    f(x) = a*x + b # Funció a fitar
+    fit f(x) filederiva 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 filederiva u 1:2 name "STATS" nooutput
+
+    error_a = STATS_slope_err
+    sd_error_a = significant_digits(error_a)
+    error_b = sqrt(STATS_slope_err + error_sist_b)
+    sd_error_b = significant_digits(error_b)
+    r = STATS_correlation
+    sd_r = significant_digits_r(r)
+
+    print("=== ".filederiva." ===")
+    print("* Línia base: fit lineal")
+}
+
+if (linear == 2) {
+    print("=== ".filederiva." ===")
+    print("* Línia base: no es fa fit")
+
+    f(x) = 0 # Cap fit
+}
+
+print("* t = 0 ºC")
+stats filederiva u (column(2) - f(column(1))) name "STATS_ZERO" nooutput
+sign_dig_epsilon_100 = significant_digits(STATS_ZERO_stddev)
+print(sprintf("    - epsilon = %.".sign_dig_epsilon_100."f +- %.".sign_dig_epsilon_100."f", STATS_ZERO_mean, STATS_ZERO_stddev))
+
+print("* t = 100 ºC")
+stats fileahundred u (column(2) - f(column(1))) name "STATS_AHUNDRED" nooutput
+sign_dig_epsilon_100 = significant_digits(STATS_AHUNDRED_stddev)
+print(sprintf("    - epsilon = %.".sign_dig_epsilon_100."f +- %.".sign_dig_epsilon_100."f", STATS_AHUNDRED_mean, STATS_AHUNDRED_stddev))
+
+print("* t = 53 ºC")
+stats filefiftythree u (column(2) - f(column(1))) name "STATS_FIFTYTHREE" nooutput
+sign_dig_epsilon_100 = significant_digits(STATS_FIFTYTHREE_stddev)
+print(sprintf("    - epsilon = %.".sign_dig_epsilon_100."f +- %.".sign_dig_epsilon_100."f", STATS_FIFTYTHREE_mean, STATS_FIFTYTHREE_stddev))
+
+plot [0:] datafile u 1:(column(2) - f(column(1))) t "Força electromotriu mesurada" w l, STATS_AHUNDRED_mean t "$\\varepsilon(\\SI{100}{\\celsius})$", STATS_FIFTYTHREE_mean t "$\\varepsilon(\\SI{53}{\\celsius})$"
+
+# == 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
