Andrea Burattin

Associate Professor
Technical University of Denmark


Migliorare l'aspetto dei grafici generati tramite Gnuplot

Alcuni suggerimenti per migliorare l'aspetto dei grafici

Gnuplot è un utile strumento per la generazione di grafici. La sua potenza e versatilità lo rendono molto usato in ambito scientifico ed accademico.

Una delle peculiarità di Gnuplot consiste nella capacità di generare grafici in formato SVG, particolarmente indicati per la rappresentazione di immagini vettoriali. Lo strumento Inkscape, ad esempio, consente di trasformare immagini SVG in PDF (tramite il comando inkscape -A destinazione.pdf sorgente.svg), le quali possono essere facilmente inserite in documenti LaTeX.

Si supponga di voler rappresentare le funzioni $\sin(x)$ e $\cos(x)$. Ecco lo script Gnuplot:

set terminal svg
set out "test.svg"

set nokey

set xrange [0:10]
set yrange [-1:1]

plot sin(x)
plot cos(x)

Si supponga di salvare questo script nel file test.gnuplot e di eseguirlo tramite il comando gnuplot test.gnuplot. Le prime due righe del file indicano a Gnuplot che si vuole generare l'output in formato SVG e l'output deve essere salvato nel file test.svg. La terza istruzione, segnala al programma che, in questo particolare caso, non si è interessati alla legenda (nokey). Le restanti direttive indicano il range di valori da disegnare e le due funzioni. Il risultato di questo script è il seguente:

Come si nota, l'aspetto grafico non è particolarmente accattivante. Si può procedere, per migliorare la leggibilità, inserendo una griglia (set grid) e caratterizzando le due funzioni con stili diversi (plot sin(x) linestyle 1 e plot cos(x) linestyle 2). Il nuovo risultato sarà:

I colori di base di Gnuplot sono colori primari, che potrebbero non piacere particolarmente. Questi possono essere cambiati tramite linecolor rgb "#FFFFFF". Inoltre, aggiungendo alcune opzioni alla direttiva che imposta il terminale è possibile sostituire il font (sia il nome che la dimensione) del grafico ed indicare che si desidera linee tratteggiate. Il terminale, così adattato, diventa: set terminal svg fname "Ubuntu" fsize 13 dashed (attenzione: in questo esempio, io uso il font Ubuntu; se questo non è presente nella macchina, non potrà essere visualizzato). Grazie al parametro dashed stili diversi saranno identificati da tratteggi diversi, quindi si potrà personalizzare sia il tipo di tratteggio che il colore delle linee. Etichette per gli assi possono essere inserite tramite set xlabel "Valori asse x" e set ylabel "Valori asse y".

Applicando tutte le modifiche, lo script finale diventa:

set terminal svg fname "Ubuntu" fsize 13 dashed
set out "test.svg"

set nokey
set grid linestyle 3 linecolor rgb "#666666"
set border 3 linewidth 1 linecolor rgb "#333333"

set xlabel "Valori asse x"
set ylabel "Valori asse y"

set xrange [0:10]
set yrange [-1:1]

plot sin(x) linestyle 1 linewidth 2 linecolor rgb "#6d78ab"
plot cos(x) linestyle 2 linewidth 2 linecolor rgb "#bd2129"

Che, una volta eseguito, genera il seguente grafico:

Infine, per poter migliorare la riusabilità degli script, si ricorda la possibilità di definire stili, tramite set style e le varie scorciatoie (ad esempio, lc per linecolor, lw per linewidth e ls per linestyle).

Riferimenti

Latest website update: 18 April 2024.