diff --git a/p5/graphs/graph.gnu b/p5/graphs/graph.gnu
new file mode 100755
index 0000000..1e54a45
--- /dev/null
+++ b/p5/graphs/graph.gnu
@@ -0,0 +1,83 @@
+#!/usr/bin/env gnuplot -c
+# == DEFINICIONS ==
+datafile = ARG1 # Nom del fitxer de dades que es vol usar
+datafilelow = ARG2
+datafilehigh = ARG3
+material = ARG4 # Nom del material del bloc que s'introdueix
+outputfile = ARG5 # Nom de la imatge resultant (sense extensió)
+error_sist_b = 0.001 # Error sistemàtic en l'eix y
+
+debugmode = 0 # 0: off, 1: on
+
+print('== '.datafile.' ==')
+
+# == 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 "$m \\, (\\si{\\gram})$"
+
+set autoscale yfixmin
+set autoscale xfixmax
+
+# Opcions per la llegenda:
+set key above
+set key spacing 1.5
+
+# == CONFIGURACIÓ DEL FIT ==
+set fit quiet
+
+f(x) = a*x + b
+g(x) = c*x + d
+
+fit f(x) datafilelow u 1:(column(2)/1000) via a, b
+fit g(x) datafilehigh u 1:(column(2)/1000) via c, d
+
+if (debugmode) {
+    stats datafilelow u 1:(column(2)/1000) name 'LOW' nooutput
+
+    print(sprintf('a = %.4f', a))
+    print(sprintf('b = %.4f', b))
+    print(sprintf('R = %.4f', LOW_correlation))
+
+    stats datafilehigh u 1:(column(2)/1000) name 'HIGH' nooutput
+
+    print(sprintf('c = %.4f', c))
+    print(sprintf('d = %.4f', d))
+    print(sprintf('R = %.4f', HIGH_correlation))
+}
+
+stats datafile u 1:(column(2)/1000) name 'STATS' nooutput
+
+print(sprintf('min = (%.4f, %.4f)', STATS_pos_min_y, STATS_min_y))
+print(sprintf('max = (%.4f, %.4f)', STATS_pos_max_y, STATS_max_y))
+
+M = STATS_max_y - f((STATS_pos_min_y + STATS_pos_max_y)/2)
+print(sprintf('M = %.4f', M))
+
+deltam = STATS_max_y - g((STATS_pos_min_y + STATS_pos_max_y)/2)
+print(sprintf('delta m = %.4f', deltam))
+
+set arrow 1 from ((STATS_pos_min_y + STATS_pos_max_y)/2),STATS_max_y to \
+    ((STATS_pos_min_y + STATS_pos_max_y)/2),g(STATS_pos_min_y)
+set arrow 1 nohead
+
+set label 1 "$\\Delta m$" at \
+    ((STATS_pos_min_y + STATS_pos_max_y)/2),((STATS_max_y + g(STATS_pos_min_y))/2) \
+    right offset -0.5
+
+plot datafile u 1:(column(2)/1000) w p pt 7 ps 0.4 t "Dades experimentals", \
+    f(x) t "1r estat estable", g(x) t "2n estat estable"
+
+# == 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
+
+print('')
