web analytics

[Guida] Un’introduzione alla realizzazione di grafici con Gnuplot

gnuplot gnu linux

Questo articolo vuole essere un’introduzione a Gnuplot, uno dei più noti programmi di plottaggio interattivo. Se lo si padroneggia, questo software multipiattaforma ha enormi potenzialità, e numerose possibilità di configurazione.

Gnuplot: disegnare grafici su GNU/Linux

Realizzare grafici da una serie di dati è un’operazione molto comune, effettuata quotidianamente in diversi ambienti lavorativi. In statistica, fisica, economia, medicina, informatica, avere una sintesi grafica può risultare spesso un aiuto decisivo nei processi di analisi e decisione. Spesso, tuttavia, ci si avvale di pesanti software dotati di GUI come Libreoffice Calc o Microsoft Excel che, per quanto possano essere immediati, non danno le possibilità di interazione ed automatizzazione della nostra cara shell. In tutte quelle occasioni in cui non si è confinati in un ambiente specifico, come STATA o SAP ad esempio, potrebbe risultare utile imparare ad usare Gnuplot.

gnuplot esempio web app

Gnuplot è stato originariamente creato nel 1986, per consentire a scienziati e studenti di visualizzare funzioni e dati matematici in modo interattivo. Da allora è cresciuto moltissimo, fino a supportare molti usi non interattivi come lo scripting Web. Installare il tool sul pinguino è semplicissimo, essendo incluso in tutti i principali repository. Su Ubuntu, Mint e derivate, ad esempio, basterà che utilizziate la direttiva:

sudo apt install gnuplot

Le basi

Per realizzare un semplice grafico con cui mostrarvi le basi di Gnuplot, ovviamente, serve un database. Io, ad esempio, ho creato tramite il seguente comando un piccolo database che mostra la velocità di upload della mia rete domestica, misurata con speedtest ad intervalli regolari, per qualche minuto:

while true; do speedtest > tmp.txt; cat tmp.txt | grep -A1 "Upload" | sed 's/^.*: //' >> data.txt; rm ./tmp.txt; sleep 60; done

Potete avviare questo script da terminale e, dopo qualche minuto, inviare un segnale di interruzione con CTRL + c. Otterrete un file data.txt come il seguente:

93.25 Mbit/s
89.25 Mbit/s
94.12 Mbit/s
...

gnuplot
Un primo grafico, come quello del precedente screenshot, può essere ottenuto in Gnuplot tramite questa direttiva:

gnuplot -p -e "plot 'data.txt'

in cui ho utilizzato le seguenti opzioni:

  • -p o –persist, per mantenere il grafico aperto dopo l’esecuzione del comando;
  • -e indica i comandi successivi da passare al tool, compresi tra le virgolette.

Il grafico così realizzato è ancora molto grezzo. Manca, ad esempio, un titolo, che va aggiunto ampliando il comando precedente:

gnuplot -p -e "set title 'Velocità Upload'; plot 'data.txt'"

Va da se che, continuando ad utilizzare questa sintassi, si rischia di ottenere una direttiva davvero lunga e difficile da decifrare. Conviene utilizzare, quindi, un file in formato .gnuplot, contenente tutte le istruzioni che volete inviare al tool.

Continuando con il precedente esempio, quindi, ho creato un file data.gnuplot, da utilizzare poi con l’istruzione gnuplot data.gnuplot. Il contenuto del file è il seguente:

set term png
set output "data.png"                               #esporta il grafico come immagine png
set title 'Variazione Velocità Upload'
set xlabel "Tempo"                                  #etichetta asse x
set ylabel "Velocità (Mbit/s)"                      #etichetta asse y
plot 'data.txt' title 'Velcoità Upload' with line   #with line disegna il grafico a linea

Come vi ho già anticipato nell’introduzione, questo articolo è solo un’introduzione a Gnuplot, per quanti di voi si stanno avvicinando per la prima volta a questo mondo e vogliono impararne le potenzialità. Dove procedere da qui, ovviamente, dipenderà moltissimo dalla vostra area di specializzazione. Un importante riferimento, indubbiamente, è la documentazione ufficiale.

sharing-caring-1Seguiteci sul nostro canale Telegram, sulla nostra pagina Facebook e su Google News. Nel campo qui sotto è possibile commentare e creare spunti di discussione inerenti le tematiche trattate sul blog.