blob: 1e54a459ab3f48a5f38e814b73158a3fb49e94e9 [file] [log] [blame]
avm999632f58ec32020-12-02 16:13:19 +01001#!/usr/bin/env gnuplot -c
2# == DEFINICIONS ==
3datafile = ARG1 # Nom del fitxer de dades que es vol usar
4datafilelow = ARG2
5datafilehigh = ARG3
6material = ARG4 # Nom del material del bloc que s'introdueix
7outputfile = ARG5 # Nom de la imatge resultant (sense extensió)
8error_sist_b = 0.001 # Error sistemàtic en l'eix y
9
10debugmode = 0 # 0: off, 1: on
11
12print('== '.datafile.' ==')
13
14# == CONFIGURACIÓ DE L'OUTPUT PEL LATEX ==
15set terminal cairolatex size 7.4cm, 6cm
16set output outputfile.'.tex'
17
18# == CONFIGURACIÓ DEL PLOT ==
19set xlabel "$t \\, (\\si{\\second})$"
20set ylabel "$m \\, (\\si{\\gram})$"
21
22set autoscale yfixmin
23set autoscale xfixmax
24
25# Opcions per la llegenda:
26set key above
27set key spacing 1.5
28
29# == CONFIGURACIÓ DEL FIT ==
30set fit quiet
31
32f(x) = a*x + b
33g(x) = c*x + d
34
35fit f(x) datafilelow u 1:(column(2)/1000) via a, b
36fit g(x) datafilehigh u 1:(column(2)/1000) via c, d
37
38if (debugmode) {
39 stats datafilelow u 1:(column(2)/1000) name 'LOW' nooutput
40
41 print(sprintf('a = %.4f', a))
42 print(sprintf('b = %.4f', b))
43 print(sprintf('R = %.4f', LOW_correlation))
44
45 stats datafilehigh u 1:(column(2)/1000) name 'HIGH' nooutput
46
47 print(sprintf('c = %.4f', c))
48 print(sprintf('d = %.4f', d))
49 print(sprintf('R = %.4f', HIGH_correlation))
50}
51
52stats datafile u 1:(column(2)/1000) name 'STATS' nooutput
53
54print(sprintf('min = (%.4f, %.4f)', STATS_pos_min_y, STATS_min_y))
55print(sprintf('max = (%.4f, %.4f)', STATS_pos_max_y, STATS_max_y))
56
57M = STATS_max_y - f((STATS_pos_min_y + STATS_pos_max_y)/2)
58print(sprintf('M = %.4f', M))
59
60deltam = STATS_max_y - g((STATS_pos_min_y + STATS_pos_max_y)/2)
61print(sprintf('delta m = %.4f', deltam))
62
63set arrow 1 from ((STATS_pos_min_y + STATS_pos_max_y)/2),STATS_max_y to \
64 ((STATS_pos_min_y + STATS_pos_max_y)/2),g(STATS_pos_min_y)
65set arrow 1 nohead
66
67set label 1 "$\\Delta m$" at \
68 ((STATS_pos_min_y + STATS_pos_max_y)/2),((STATS_max_y + g(STATS_pos_min_y))/2) \
69 right offset -0.5
70
71plot datafile u 1:(column(2)/1000) w p pt 7 ps 0.4 t "Dades experimentals", \
72 f(x) t "1r estat estable", g(x) t "2n estat estable"
73
74# == CONFIGURACIÓ DE L'OUTPUT PER SVG ==
75# Això ho uso per generar també una imatge de previsualització que puc carregar
76# a l'ordinador per veure més o menys com a sortit el plot sense haver
77# d'inserir-ho al LaTeX per veure-ho.
78set terminal svg dashed size 600, 600 font "Computer Modern,Tinos,Helvetica,15"
79set output outputfile.'.svg'
80
81replot
82
83print('')