diff --git a/p1/graphs/generate.bash b/p1/graphs/generate.bash
new file mode 100644
index 0000000..83c840e
--- /dev/null
+++ b/p1/graphs/generate.bash
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+mkdir -p ../output
+
+data="../data"
+output="../output"
+
+for i in 3 5 9; do
+  ./graph.gnu "$data/m${i}.dat" "$data/m${i}_deriva.dat" "$data/m${i}_100.dat" "$data/m${i}_53.dat" "$output/m${i}"
+done
+
+./graph2.gnu "$data/epsilons2.dat" "$output/epsilons"
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
diff --git a/p1/graphs/graph2.gnu b/p1/graphs/graph2.gnu
new file mode 100755
index 0000000..5ee1cdb
--- /dev/null
+++ b/p1/graphs/graph2.gnu
@@ -0,0 +1,42 @@
+#!/usr/bin/env gnuplot -c
+# == DEFINICIONS ==
+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, 10cm
+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))
+
+p(x) = a*x + b*x*x # Funció a fitar
+fit p(x) datafile u 1:2 via a, b # Fem el fit de les dades
+
+plot [-50:150] datafile u 1:2:(0):3 w xyerr t "Dades", p(x) t "$\\varepsilon(t)$"
+
+# == 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
