diff --git a/quad8/electro/lab/p6/graphs/6_3_2_1.gnu b/quad8/electro/lab/p6/graphs/6_3_2_1.gnu
new file mode 100755
index 0000000..7354047
--- /dev/null
+++ b/quad8/electro/lab/p6/graphs/6_3_2_1.gnu
@@ -0,0 +1,58 @@
+#!/usr/bin/env gnuplot -c
+# == DEFINICIONS ==
+outputfile = '../output/6_3_2_1' # Nom de la imatge resultant (sense extensió)
+datafile = '../data/6_3_2_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 '$\tan(\alpha) =: x$'
+set ylabel '$B_b \, (\si{\milli\tesla)}$'
+
+# 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 4:3 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 4:3 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('$B_b(x) = %.'.sd_error_a.'f x + (%.'.sd_error_b.'f)$, $r = %.'.sd_r.'f$', a, b, r);
+
+plot datafile u 4:3:5 t "Dades experimentals" w xerr, 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
diff --git a/quad8/electro/lab/p6/graphs/6_3_2_2.gnu b/quad8/electro/lab/p6/graphs/6_3_2_2.gnu
new file mode 100755
index 0000000..e2d4439
--- /dev/null
+++ b/quad8/electro/lab/p6/graphs/6_3_2_2.gnu
@@ -0,0 +1,62 @@
+#!/usr/bin/env gnuplot -c
+# == DEFINICIONS ==
+outputfile = '../output/6_3_2_2' # Nom de la imatge resultant (sense extensió)
+datafile = '../data/6_3_2_2.dat' # Nom del fitxer de dades que es vol usar
+b_mean_exp_err = 0.00014
+a_exp_err = 0.002
+
+# == CONFIGURACIÓ DE L'OUTPUT PEL LATEX ==
+set terminal cairolatex size 10cm, 7.5cm font ",10"
+set output outputfile.'.tex'
+
+# == CONFIGURACIÓ DEL PLOT ==
+set xlabel '$B_b \, (\si{\milli\tesla)}$'
+set ylabel '${\scriptstyle (-1)^s} \frac{1}{T^2} =: y \quad (\si{\per\second\squared})$'
+
+# 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 7:6 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 7:6 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 = sqrt(STATS_slope_err**2 + a_exp_err**2)
+sd_error_a = significant_digits(error_a)
+error_b = sqrt(STATS_intercept_err**2 + b_mean_exp_err**2)
+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('$y(B_b) = %.'.sd_error_a.'f B_b + (%.'.sd_error_b.'f)$, $r = %.'.sd_r.'f$', a, b, r);
+
+set xtics 0.03
+
+plot datafile u 7:6:10 t "Dades experimentals" w yerr, 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
diff --git a/quad8/electro/lab/p6/graphs/generate.bash b/quad8/electro/lab/p6/graphs/generate.bash
new file mode 100755
index 0000000..3467ba2
--- /dev/null
+++ b/quad8/electro/lab/p6/graphs/generate.bash
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+mkdir -p ../output
+
+./6_3_2_1.gnu
+./6_3_2_2.gnu
