| #!/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('') |