lunedì 2 maggio 2011

Gnuplot programma applicativo per il disegno di funzioni e di dati nello spazio a due e tre dimensioni.

Maria Susana Diaz | 19:41 |
Gnuplot è un programma applicativo per il disegno di funzioni e di dati nello spazio a due e tre dimensioni.

Il suo funzionamento avviene per mezzo di istruzioni impartite attraverso una riga di comando e in questo senso il suo utilizzo può risultare un po' strano all'utilizzatore occasionale.

Gnuplot è disponibile su molti sistemi operativi differenti e per quanto riguarda GNU/Linux, si utilizza l'interfaccia grafica X.
Per la precisione, si deve impegnare una finestra di terminale, attraverso la quale impartire i comandi.

Questi generano eventualmente una rappresentazione grafica che viene mostrata in una finestra separata.

Gnuplot è un versatile programma, distribuito gratuitamente in rete anche con il permesso di cambiarne il codice sorgente, per la realizzazione di grafici di funzioni matematiche in due e tre dimensioni e la rappresentazione grafica (fitting/interpolazione) di dati grezzi.

Il programma gira su tutti i principali computer e sistemi operativi e può produrre un'uscita sia sullo schermo sia nei principali formati di file.

Il programma non ha alcuna connessione con il progetto GNU e non utilizza la licenza GNU GPL. Il suo nome originariamente doveva essere "llamaplot" ma Colin Kelley preferiva "nplot". Gli sviluppatori scesero quindi a compromessi e decisero per "newplot", che tuttavia era già stato usato per un altro progetto. La scelta finale quindi cadde su "gnuplot".

Per inserire i comandi si utilizza un sistema simile ad un terminale. Per vedere un esempio di codice con gnuplot vedere l'immagine sullo spettro del decadimento beta.

È interessante anche la modalità da shell, che consente di salvare le istruzioni per creare le immagini in semplici script.

Gnuplot è inoltre implementato per il rendering da vari programmi, come GNU Octave, Emacs e altri.
L'esempio seguente mostra una sessione di lavoro brevissima utilizzando l'eseguibile gnuplot per visualizzare la funzione x2 * sin(x), dove sia l'asse X che l'asse Y vanno da -π a +π.
gnuplot[Invio]

Una funzione nello spazio tridimensionale disegnata con Gnuplot.
splot [-pi:pi] [-pi:pi] x**2 * sin(y)
La versione per GNU/Linux di Gnuplot utilizza la libreria Readline per il controllo della riga di comando: questo facilita la sua configurazione (attraverso il file ~/.inputrc) e il riutilizzo di comandi già inseriti, attraverso lo scorrimento dello storico. In pratica, chi utilizza già la shell Bash dovrebbe trovarsi a suo agio di fronte alla riga di comando di Gnuplot.

Avvio e interazione normale. 

Di norma, Gnuplot viene avviato attraverso l'eseguibile gnuplot, utilizzando necessariamente una finestra di terminale. Non è previsto l'uso di opzioni speciali, a parte quelle comuni per l'uso di programmi nel sistema grafico X (-geometry, -display, ecc.).

Eventualmente, come si vede dallo schema sintattico, possono essere indicati dei file da caricare ed eseguire. Si tratta di script di Gnuplot, composti semplicemente da una sequenza di comandi che potrebbero essere impartiti attraverso la riga di comando normale dello stesso.

Il disegno delle funzioni avviene attraverso il comando plot, per le curve nello spazio a due dimensioni, e splot, per i piani nello spazio a tre dimensioni. Il funzionamento interattivo di Gnuplot (quello normale che si ottiene quando non si indicano file da caricare) prevede in particolare il comando help per ottenere una guida rapida ai comandi e il comando exit (o quit) per terminarne il funzionamento.
La guida rapida ottenibile con il comando help permette di selezionare degli argomenti particolari che generalmente corrispondono ai nomi dei comandi utilizzabili. Il comando help da solo mostra un'introduzione all'uso di Gnuplot e termina elencando gli argomenti per i quali si possono richiedere informazioni specifiche.

Quando la rappresentazione di una curva o di un piano avviene in un contesto interattivo, si ottiene una finestra, sulla quale è possibile intervenire con l'ausilio del mouse (o di qualunque altra unità di puntamento). Gli schemi successivi riassumono i comandi principali.

 Alcuni comandi disponibili durante la rappresentazione di grafici bidimensionali.
Comando Descrizione
[h] Mostra una guida nelle finestra da cui si danno i comandi di Gnuplot.
clic con il tasto centrale Annota sul grafico le coordinate della posizione in cui si trovata il puntatore grafico.
clic con il tasto destro Inizia la selezione di un'area da ingrandire, ma potrebbe funzionare solo se non è stato specificato il dominio dell'asse X e l'estensione dell'asse Y. Per annullare l'operazione, prima di averla completata, si può premere il tasto [Esc].
[g] Fa apparire o scomparire una griglia sopra il grafico.
[r] Mette o toglie un righello, allineato sulla posizione del puntatore grafico. Quando è attivo il righello, si può leggere la distanza relativa del puntatore grafico rispetto a quella posizione stabilita.
[l] Passa a una scala logaritmica, oppure torna a una scala decimale.

Alcuni comandi disponibili durante la rappresentazione di grafici tridimensionali.
Comando Descrizione
[h] Mostra una guida nelle finestra da cui si danno i comandi di Gnuplot.
clic con il tasto sinistro e trascinamento, oppure uso dei tasti freccia Ruota la proiezione tridimensionale.
clic con il tasto centrale e trascinamento orizzontale Ingrandisce o riduce la rappresentazione, nel suo complesso.
clic con il tasto centrale e trascinamento verticale Amplia o riduce la scala verticale.
[g] Fa apparire o scomparire una griglia per gli assi X e Y.
[l] Passa a una scala logaritmica, oppure torna a una scala decimale.

Comandi comuni.

I comandi di Gnuplot sono numerosi e complessi. Qui viene mostrato solo l'uso di alcuni di questi e in modo elementare, dove in particolare anche gli schemi sintattici vengono semplificati.

In generale, è possibile mettere assieme più comandi in un'unica riga separandoli con il punto e virgola (;); i comandi possono continuare nella riga successiva se si utilizza la barra obliqua inversa (\) esattamente alla fine di una riga da continuare. Alcuni argomenti dei comandi sono delle stringhe, nel senso che non fanno riferimento a parole chiave previste; in tal caso devono essere delimitate con gli apici singoli (') o con gli apici doppi ("), dove le stringhe delimitate con apici doppi espandono alcune sequenze precedute dalla barra obliqua inversa, mentre le altre no.

Una riga di comando di Gnuplot può contenere anche stringhe delimitate da apici inversi (`). In tal caso queste stringhe vengono interpretate come comandi del sistema operativo sottostante e vengono rimpiazzate con il risultato dell'esecuzione del comando stesso.

I comandi possono contenere dei commenti che iniziano nel momento in cui appare il simbolo # e fanno in modo che venga ignorato tutto quello che segue fino alla fine della riga.

Quando un comando prevede l'indicazione di un intervallo di valori, questo viene indicato utilizzando la notazione [inizio:fine], con le parentesi quadre che fanno parte della notazione stessa. Se per qualche motivo si deve indicare un intervallo predefinito in modo esplicito, si possono usare le parentesi aperte e chiuse senza alcuno contenuto: [].

Segue la descrizione di alcuni esempi.
  • gnuplot> help plot[Invio]
    Mostra la guida interna riferita al comando plot.
  • gnuplot> plot sin(x)[Invio]
    Disegna la funzione seno utilizzando una zona predefinita degli assi cartesiani.
    plot sin(x)
  • gnuplot> plot sin(x) title 'seno di x'[Invio]
    Come nell'esempio precedente, indicando la stringa seno di x come didascalia riferita alla curva disegnata.
    plot sin(x) title 'seno di x'
  • gnuplot> plot [-3:3] sin(x) title 'seno di x'[Invio]
    Come nell'esempio precedente, limitando l'ampiezza dell'asse X da -3 a +3.
    plot [-3:3] sin(x) title 'seno di x'
  • gnuplot> plot [-pi:pi] sin(x) title 'seno di x'[Invio]
    Come nell'esempio precedente, limitando l'ampiezza dell'asse X da -π a +π.
    plot [-pi:pi] sin(x) title 'seno di x'
  • gnuplot> plot 'mio_file.gnuplot'[Invio]
    Disegna nello spazio a due dimensioni i punti annotati nel file mio_file.gnuplot che si trova nella directory corrente.
  • gnuplot> splot x**2 * sin(y)[Invio]
    Disegna un piano nello spazio corrispondente alla funzione ottenuta dal quadrato di x moltiplicato per il seno di y.
    splot x**2 * sin(y)
  • gnuplot> splot x**2 * sin(y) title 'quadrato di x per seno di y'[Invio]
    Come nell'esempio precedente, indicando la stringa «quadrato di x per seno di y» come didascalia riferita al piano disegnato.
    splot x**2 * sin(y) title 'quadrato di x per seno di y'
  • gnuplot> splot [-3:3] [-5:5] x**2 * sin(y) \
      \             title 'quadrato di x per seno di y'
    [Invio]
    Come nell'esempio precedente, limitando l'ampiezza dell'asse X da -3 a +3 e quella dell'asse Y da -5 a +5.
    splot [-3:3] [-5:5] x**2 * sin(y) title 'quadrato di x per seno di y'
  • gnuplot> splot [0:pi] [-pi:pi] x**2 * sin(y) \
      \              title 'quadrato di x per seno di y'
    [Invio]
    Come nell'esempio precedente, limitando l'ampiezza dell'asse X da zero a +π e quella dell'asse Y da -π a +π.
    splot [0:pi] [-pi:pi] x**2 * sin(y) title 'quadrato di x per seno di y'
  • gnuplot> splot 'mio_file.gnuplot'[Invio]
    Disegna nello spazio a tre dimensioni i punti annotati nel file mio_file.gnuplot che si trova nella directory corrente.
  • gnuplot> if (1==1) print 'ovvio: 1 è uguale a 1'[Invio]
    Dal momento che la condizione si avvera, mostra la frase «ovvio: 1 è uguale a 1».



Espressioni.

Le espressioni che si possono utilizzare con Gnuplot sono più o meno le stesse dei linguaggi di programmazione più comuni e, in generale, gli spazi orizzontali sono ignorati. Tra le altre cose questo giustifica il motivo per cui diversi tipi di argomenti dei comandi di Gnuplot devono essere definiti come stringhe delimitate.

L'aritmetica di Gnuplot distingue tra numeri interi e numeri a virgola mobile, per cui, utilizzando numeri interi si hanno risultati interi, mentre utilizzando valori a virgola mobile si ottengono risultati a virgola mobile. In pratica:
gnuplot> print 10/3[Invio]
3 
gnuplot> print 10/3.0[Invio]
3.33333333333333 
gnuplot> print 10/2[Invio]
5 
gnuplot> print 10/2.0[Invio]
5.0 
Le costanti numeriche possono essere indicate nei modi consueti, con o senza segno, separando la parte intera da quella decimale attraverso un punto, oppure si può usare anche una notazione esponenziale. Per esempio:
gnuplot> print 1e2[Invio]
100.0 
gnuplot> print 1e-2[Invio]
0.01 
Gli operatori che si possono utilizzare nelle espressioni di Gnuplot sono in pratica quelli del linguaggio C. La tabella seguente elenca e descrive gli operatori aritmetici e quelli di assegnamento.

 Elenco degli operatori aritmetici e di quelli di assegnamento relativi a valori numerici.
Operatore e
operandi
Descrizione
+<var>op</var> 
Non ha alcun effetto.
-<var>op</var> 
Inverte il segno dell'operando.
<var>op1</var> + <var>op2</var> 
Somma i due operandi.
<var>op1</var> - <var>op2</var> 
Sottrae dal primo il secondo operando.
<var>op1</var> * <var>op2</var> 
Moltiplica i due operandi.
<var>op1</var> / <var>op2</var> 
Divide il primo operando per il secondo.
<var>op1</var> % <var>op2</var> 
Modulo: il resto della divisione tra il primo e il secondo operando.
<var>var</var> = <var>valore</var> 
Assegna alla variabile il valore alla destra.
<var>op1</var> ** <var>op2</var> 
Eleva il primo operando alla potenza del secondo.
Molti degli operatori matematici hanno senso solo perché Gnuplot consente di definire delle variabili al volo, semplicemente assegnandoci un valore. L'esempio seguente assegna alla variabile a il doppio del π:
gnuplot> a = 2*pi[Invio]
Per visualizzarne il contenuto basta utilizzare il comando print:

gnuplot> print a[Invio]
6.28318530717959 

Gli operatori di confronto determinano la relazione tra due operandi. Il risultato dell'espressione composta da due operandi posti a confronto è di tipo booleano, rappresentabile all'interno di Gnuplot come !0, o non-zero (Vero), e zero (Falso), esattamente come accade nel linguaggio C. È importante sottolineare che qualunque valore diverso da zero equivale a Vero in un contesto logico. Gli operatori di confronto sono elencati nella tabella seguente.

Elenco degli operatori di confronto. Le metavariabili indicate rappresentano gli operandi e la loro posizione.
Operatore e
operandi
Descrizione
<var>op1</var> == <var>op2</var> 
Vero se gli operandi si equivalgono.
<var>op1</var> != <var>op2</var> 
Vero se gli operandi sono differenti.
<var>op1</var> < <var>op2</var> 
Vero se il primo operando è minore del secondo.
<var>op1</var> > <var>op2</var> 
Vero se il primo operando è maggiore del secondo.
<var>op1</var> <= <var>op2</var> 
Vero se il primo operando è minore o uguale al secondo.
<var>op1</var> >= <var>op2</var> 
Vero se il primo operando è maggiore o uguale al secondo.
Quando si vogliono combinare assieme diverse espressioni logiche, comprendendo in queste anche delle variabili che contengono un valore booleano, si utilizzano gli operatori logici (noti normalmente come: AND, OR, NOT, ecc.). Il risultato di un'espressione logica complessa è quello dell'ultima espressione elementare a essere valutata. Gli operatori logici sono elencati nella tabella seguente:

Elenco degli operatori logici. Le metavariabili indicate rappresentano gli operandi e la loro posizione.
Operatore e
operandi
Descrizione
! <var>op</var> 
Inverte il risultato logico dell'operando.
<var>op1</var> && <var>op2</var> 
Se il risultato del primo operando è Falso non valuta il secondo.
<var>op1</var> || <var>op2</var> 
Se il risultato del primo operando è Vero non valuta il secondo.
Gnuplot riconosce una serie di funzioni in parte elencate nella tabella seguente, oltre alla costante pi (solo al minuscolo) che rappresenta il π.

Alcune funzioni riconosciute da Gnuplot.
Funzione Descrizione
rand(<var>op</var>) 
Numero casuale.
int(<var>op</var>) 
Parte intera.
abs(<var>op</var>) 
Valore assoluto.
sqrt(<var>op</var>) 
Radice quadrata.
log10(<var>op</var>) 
Logaritmo in base dieci.
log(<var>op</var>) 
Logaritmo naturale.
exp(<var>op</var>) 
e^x.
sin(<var>op</var>) 
Seno.
cos(<var>op</var>) 
Coseno.
tan(<var>op</var>) 
Tangente.
asin(<var>op</var>) 
Arco-seno.
acos(<var>op</var>) 
Arco-coseno.
atan(<var>op</var>) 
Arco-tangente.
sinh(<var>op</var>) 
Seno iperbolico.
cosh(<var>op</var>) 
Coseno iperbolico.
tanh(<var>op</var>) 
Tangente iperbolica.

Infine, Gnuplot, oltre alla possibilità di creare e assegnare dei valori a delle variabili, può definire delle funzioni. L'esempio seguente definisce la funzione denominata funzione che ha due variabile, x e y, che si traduce nell'espressione x**2 * y:
gnuplot> funzione(x,y) = x**2 * y[Invio]
In seguito, si può utilizzare la funzione appena creata per farci dei calcoli:
gnuplot> print funzione(2,3)[Invio]
12 
Oppure la si può usare per disegnarne il grafico:
gnuplot> splot funzione(x,y)[Invio]
funzione(x,y) = x**2 * y
Naturalmente la stessa cosa vale per le funzioni con una sola variabile.

Script .

I file che possono essere indicati alla fine degli argomenti della riga di comando dell'eseguibile gnuplot e quelli che possono essere caricati attraverso il comando load, sono degli script di Gnuplot. La sintassi di questi file è molto semplice: si tratta solo di un elenco di comandi di Gnuplot.
In particolare, se esiste il file ~/.gnuplot, questo viene trattato come uno script da eseguire all'avvio di Gnuplot.

A titolo di esempio viene mostrato uno script del genere il cui scopo è quello di mostrare una serie di funzioni come in una sequenza di diapositive:

#!/usr/bin/gnuplot # # Sequenza di funzioni con Gnuplot. # plot [-1:1]  2*x title 'f(x) = 2x' pause -1 'premere [Invio] per continuare'  plot [-2:2]  x**2 title 'f(x) = x^2' pause -1 'premere [Invio] per continuare'  plot [-2:100] log(x) title 'log(x)' pause -1 'premere [Invio] per continuare'  plot [-pi:pi]  sin(x) title 'seno' pause -1 'premere [Invio] per continuare'  plot [-pi:pi] tan(x) title 'tangente' pause -1 'premere [Invio] per continuare'  splot [-5:5] [-5:5]  2*x+y title 'f(x,y) = 2x+y' pause -1 'premere [Invio] per continuare'  splot [-5:5] [-5:5] x**2*y title 'f(x,y) = x^2 * y' pause -1 'premere [Invio] per continuare'  splot [-pi/4:pi/4] [-pi/2:pi/2] sin(x)*cos(y) title 'f(x,y) = sin(x)*cos(y)' pause -1 'fine della rappresentazione'
Nell'esempio viene messa in evidenza la prima riga, che in un sistema Unix o simile, consentirebbe di rendere eseguibile lo script stesso (in tal caso andrebbero comunque aggiunti i permessi di esecuzione).

File di dati
Gnuplot è in grado di gestire anche i file di dati, ovvero dei file contenenti solo delle coordinate corrispondenti a punti da rappresentare. Si tratta sempre di file di testo, in cui vengono ignorati i commenti preceduti dal simbolo # oltre alle righe bianche e a quelle vuote, mentre le altre righe contengono coordinate nella forma:

<var>x</var> <var>y</var> <strong class="syn">[</strong><var>z</var><strong class="syn">]</strong> 
Per esempio, la riga seguente rappresenta il punto di coordinata X=1 e Y=2:
1 2 
La riga seguente rappresenta il punto di coordinata X=1, Y=2 e Z=3:
1 2 3 
Per utilizzare questi file si usano, rispettivamente, i comandi plot e splot, indicando come argomento il file:
plot <var>file_di_dati_bidimensionali</var><strong class="syn">[</strong>,<var>file_di_dati_bidimensionali</var><strong class="syn">]</strong>...

splot <var>file_di_dati_tridimensionali</var><strong class="syn">[</strong>,<var>file_di_dati_tridimensionali</var><strong class="syn">]</strong>...
Per indicare un file, occorre far capire a Gnuplot che non si tratta di un'espressione, pertanto va annotato tra apici, doppi o singoli. Per esempio così:
gnuplot> plot "dati.dat"[Invio]
Quando si realizzano degli script di Gnuplot, potrebbe essere più comodo incorporare i dati nello script stesso. Pertanto, i dati da rappresentare possono essere incorporati nei comandi plot e splot:
plot '-' <var>coordinata_x_y</var>    ... e 
splot '-' <var>coordinata_x_y_z</var>    ... e 
L'esempio seguente mostra cinque punti appartenenti alla retta f(x)=x:
plot '-' 0 0 1 1 2 2 3 3 4 4 e 
plot
Per rappresentare più gruppi di punti, occorre indicare più file, separati da una virgola, oppure, per incorporare tutto in uno script, si indica più volte la stringa '-'. L'esempio seguente mostra cinque punti appartenenti alla retta f(x)=x e altri cinque punti (colorati in modo diverso) appartenenti alla retta f(x)=x+1:
plot '-', '-' 0 0 1 1 2 2 3 3 4 4 e 0 1 1 2 2 3 3 4 4 5 e 
plot

Controllare l'uscita grafica.

I disegni realizzati con Gnuplot sono diretti normalmente in una finestra di X. Gnuplot controlla il formato delle immagini che crea attraverso il comando set terminal.
set terminal <var>tipo_di_uscita_grafica</var> <strong class="syn">[</strong><var>altri_argomenti</var><strong class="syn">]</strong>

Per esempio, nel caso specifico della rappresentazione normale in una finestra di X, la sintassi diventa:

set terminal x11 <strong class="syn">[</strong>reset<strong class="syn">]</strong> <strong class="syn">[</strong><var>n_finestra</var><strong class="syn">]</strong>
Per la precisione, si possono visualizzare più finestre contemporaneamente, numerate a partire da zero. Utilizzando però la parola chiave reset, si eliminano tutte le finestre.
Nello schema sintattico, le parole chiave small, medium e large, si riferiscono alla dimensione dei caratteri utilizzati nelle scale e nelle didascalie. Le parole chiave monochrome, gray e color, si riferiscono alla colorazione o meno che devono avere le immagini.
Il comando appena descritto non permette di stabilire la destinazione del file generato, pertanto questa è semplicemente lo standard output. Ciò rende praticamente impossibile la gestione di immagini PNG attraverso l'uso di Gnuplot in modo interattivo. In pratica, si deve realizzare uno script, in modo da poter avviare Gnuplot ridirigendo lo standard output verso il file desiderato. Quello che segue è un esempio banale di un tale script.

# parabola.gnuplot set terminal png medium color plot x**2 
Per generare il file parabola.png, basta il comando seguente:
G N U P L O T Linux version 3.5 (pre 3.6) patchlevel beta 347 last modified Mon Jun 22 13:22:33 BST 1998 Copyright(C) 1986 - 1993, 1998 Thomas Williams, Colin Kelley and many others Send comments and requests for help to info-gnuplot@dartmouth.edu Send bugs, suggestions and mods to bug-gnuplot@dartmouth.edu Terminal type set to 'x11'
gnuplot> splot [-pi:pi] [-pi:pi] x**2 * sin(y)[Invio]
La figura seguente mostra il risultato di questa funzione, così come appare nella finestra generata dal comando di Gnuplot che è appena stato visto.

Una funzione nello spazio tridimensionale disegnata con Gnuplot.
splot [-pi:pi] [-pi:pi] x**2 * sin(y)
La versione per GNU/Linux di Gnuplot utilizza la libreria Readline per il controllo della riga di comando: questo facilita la sua configurazione (attraverso il file ~/.inputrc) e il riutilizzo di comandi già inseriti, attraverso lo scorrimento dello storico. In pratica, chi utilizza già la shell Bash dovrebbe trovarsi a suo agio di fronte alla riga di comando di Gnuplot.

Avvio e interazione normale

Di norma, Gnuplot viene avviato attraverso l'eseguibile gnuplot, utilizzando necessariamente una finestra di terminale. Non è previsto l'uso di opzioni speciali, a parte quelle comuni per l'uso di programmi nel sistema grafico X (-geometry, -display, ecc.).

gnuplot <strong class="syn">[</strong><var>opzioni</var><strong class="syn">]</strong> <strong class="syn">[</strong><var>file_script</var>...<strong class="syn">]</strong>

Eventualmente, come si vede dallo schema sintattico, possono essere indicati dei file da caricare ed eseguire. Si tratta di script di Gnuplot, composti semplicemente da una sequenza di comandi che potrebbero essere impartiti attraverso la riga di comando normale dello stesso.
Il disegno delle funzioni avviene attraverso il comando plot, per le curve nello spazio a due dimensioni, e splot, per i piani nello spazio a tre dimensioni. Il funzionamento interattivo di Gnuplot (quello normale che si ottiene quando non si indicano file da caricare) prevede in particolare il comando help per ottenere una guida rapida ai comandi e il comando exit (o quit) per terminarne il funzionamento.
La guida rapida ottenibile con il comando help permette di selezionare degli argomenti particolari che generalmente corrispondono ai nomi dei comandi utilizzabili. Il comando help da solo mostra un'introduzione all'uso di Gnuplot e termina elencando gli argomenti per i quali si possono richiedere informazioni specifiche.

Quando la rappresentazione di una curva o di un piano avviene in un contesto interattivo, si ottiene una finestra, sulla quale è possibile intervenire con l'ausilio del mouse (o di qualunque altra unità di puntamento). Gli schemi successivi riassumono i comandi principali.

Alcuni comandi disponibili durante la rappresentazione di grafici bidimensionali.
Comando Descrizione
[h] Mostra una guida nelle finestra da cui si danno i comandi di Gnuplot.
clic con il tasto centrale Annota sul grafico le coordinate della posizione in cui si trovata il puntatore grafico.
clic con il tasto destro Inizia la selezione di un'area da ingrandire, ma potrebbe funzionare solo se non è stato specificato il dominio dell'asse X e l'estensione dell'asse Y. Per annullare l'operazione, prima di averla completata, si può premere il tasto [Esc].
[g] Fa apparire o scomparire una griglia sopra il grafico.
[r] Mette o toglie un righello, allineato sulla posizione del puntatore grafico. Quando è attivo il righello, si può leggere la distanza relativa del puntatore grafico rispetto a quella posizione stabilita.
[l] Passa a una scala logaritmica, oppure torna a una scala decimale.

 Alcuni comandi disponibili durante la rappresentazione di grafici tridimensionali.
Comando Descrizione
[h] Mostra una guida nelle finestra da cui si danno i comandi di Gnuplot.
clic con il tasto sinistro e trascinamento, oppure uso dei tasti freccia Ruota la proiezione tridimensionale.
clic con il tasto centrale e trascinamento orizzontale Ingrandisce o riduce la rappresentazione, nel suo complesso.
clic con il tasto centrale e trascinamento verticale Amplia o riduce la scala verticale.
[g] Fa apparire o scomparire una griglia per gli assi X e Y.
[l] Passa a una scala logaritmica, oppure torna a una scala decimale.

Comandi comuni

I comandi di Gnuplot sono numerosi e complessi. Qui viene mostrato solo l'uso di alcuni di questi e in modo elementare, dove in particolare anche gli schemi sintattici vengono semplificati.

In generale, è possibile mettere assieme più comandi in un'unica riga separandoli con il punto e virgola (;); i comandi possono continuare nella riga successiva se si utilizza la barra obliqua inversa (\) esattamente alla fine di una riga da continuare. Alcuni argomenti dei comandi sono delle stringhe, nel senso che non fanno riferimento a parole chiave previste; in tal caso devono essere delimitate con gli apici singoli (') o con gli apici doppi ("), dove le stringhe delimitate con apici doppi espandono alcune sequenze precedute dalla barra obliqua inversa, mentre le altre no.

Una riga di comando di Gnuplot può contenere anche stringhe delimitate da apici inversi (`). In tal caso queste stringhe vengono interpretate come comandi del sistema operativo sottostante e vengono rimpiazzate con il risultato dell'esecuzione del comando stesso.

I comandi possono contenere dei commenti che iniziano nel momento in cui appare il simbolo # e fanno in modo che venga ignorato tutto quello che segue fino alla fine della riga.

Segue la descrizione di alcuni esempi.
  • gnuplot> help plot[Invio]
    Mostra la guida interna riferita al comando plot.
  • gnuplot> plot sin(x)[Invio]
    Disegna la funzione seno utilizzando una zona predefinita degli assi cartesiani.
    plot sin(x)
  • gnuplot> plot sin(x) title 'seno di x'[Invio]
    Come nell'esempio precedente, indicando la stringa seno di x come didascalia riferita alla curva disegnata.
    plot sin(x) title 'seno di x'
  • gnuplot> plot [-3:3] sin(x) title 'seno di x'[Invio]
    Come nell'esempio precedente, limitando l'ampiezza dell'asse X da -3 a +3.
    plot [-3:3] sin(x) title 'seno di x'
  • gnuplot> plot [-pi:pi] sin(x) title 'seno di x'[Invio]
    Come nell'esempio precedente, limitando l'ampiezza dell'asse X da -π a +π.
    plot [-pi:pi] sin(x) title 'seno di x'
  • gnuplot> plot 'mio_file.gnuplot'[Invio]
    Disegna nello spazio a due dimensioni i punti annotati nel file mio_file.gnuplot che si trova nella directory corrente.
  • gnuplot> splot x**2 * sin(y)[Invio]
    Disegna un piano nello spazio corrispondente alla funzione ottenuta dal quadrato di x moltiplicato per il seno di y.
    splot x**2 * sin(y)
  • gnuplot> splot x**2 * sin(y) title 'quadrato di x per seno di y'[Invio]
    Come nell'esempio precedente, indicando la stringa «quadrato di x per seno di y» come didascalia riferita al piano disegnato.
    splot x**2 * sin(y) title 'quadrato di x per seno di y'
  • gnuplot> splot [-3:3] [-5:5] x**2 * sin(y) \
      \             title 'quadrato di x per seno di y'
    [Invio]
    Come nell'esempio precedente, limitando l'ampiezza dell'asse X da -3 a +3 e quella dell'asse Y da -5 a +5.
    splot [-3:3] [-5:5] x**2 * sin(y) title 'quadrato di x per seno di y'
  • gnuplot> splot [0:pi] [-pi:pi] x**2 * sin(y) \
      \              title 'quadrato di x per seno di y'
    [Invio]
    Come nell'esempio precedente, limitando l'ampiezza dell'asse X da zero a +π e quella dell'asse Y da -π a +π.
    splot [0:pi] [-pi:pi] x**2 * sin(y) title 'quadrato di x per seno di y'
  • gnuplot> splot 'mio_file.gnuplot'[Invio]
    Disegna nello spazio a tre dimensioni i punti annotati nel file mio_file.gnuplot che si trova nella directory corrente.
  • gnuplot> if (1==1) print 'ovvio: 1 è uguale a 1'[Invio]
    Dal momento che la condizione si avvera, mostra la frase «ovvio: 1 è uguale a 1».


Espressioni

Le espressioni che si possono utilizzare con Gnuplot sono più o meno le stesse dei linguaggi di programmazione più comuni e, in generale, gli spazi orizzontali sono ignorati. Tra le altre cose questo giustifica il motivo per cui diversi tipi di argomenti dei comandi di Gnuplot devono essere definiti come stringhe delimitate.

L'aritmetica di Gnuplot distingue tra numeri interi e numeri a virgola mobile, per cui, utilizzando numeri interi si hanno risultati interi, mentre utilizzando valori a virgola mobile si ottengono risultati a virgola mobile. In pratica:

gnuplot> print 10/3[Invio]
3 
gnuplot> print 10/3.0[Invio]
3.33333333333333 
gnuplot> print 10/2[Invio]
5 
gnuplot> print 10/2.0[Invio]
5.0 
Le costanti numeriche possono essere indicate nei modi consueti, con o senza segno, separando la parte intera da quella decimale attraverso un punto, oppure si può usare anche una notazione esponenziale. Per esempio:
gnuplot> print 1e2[Invio]
100.0 
gnuplot> print 1e-2[Invio]
0.01 
Gli operatori che si possono utilizzare nelle espressioni di Gnuplot sono in pratica quelli del linguaggio C.

 Elenco degli operatori aritmetici e di quelli di assegnamento relativi a valori numerici.
Operatore e
operandi
Descrizione
+<var>op</var> 
Non ha alcun effetto.
-<var>op</var> 
Inverte il segno dell'operando.
<var>op1</var> + <var>op2</var> 
Somma i due operandi.
<var>op1</var> - <var>op2</var> 
Sottrae dal primo il secondo operando.
<var>op1</var> * <var>op2</var> 
Moltiplica i due operandi.
<var>op1</var> / <var>op2</var> 
Divide il primo operando per il secondo.
<var>op1</var> % <var>op2</var> 
Modulo: il resto della divisione tra il primo e il secondo operando.
<var>var</var> = <var>valore</var> 
Assegna alla variabile il valore alla destra.
<var>op1</var> ** <var>op2</var> 
Eleva il primo operando alla potenza del secondo.
Molti degli operatori matematici hanno senso solo perché Gnuplot consente di definire delle variabili al volo, semplicemente assegnandoci un valore. L'esempio seguente assegna alla variabile a il doppio del π:
gnuplot> a = 2*pi[Invio]
Per visualizzarne il contenuto basta utilizzare il comando print:
gnuplot> print a[Invio]
6.28318530717959 
 
Gli operatori di confronto determinano la relazione tra due operandi. Il risultato dell'espressione composta da due operandi posti a confronto è di tipo booleano, rappresentabile all'interno di Gnuplot come !0, o non-zero (Vero), e zero (Falso), esattamente come accade nel linguaggio C. È importante sottolineare che qualunque valore diverso da zero equivale a Vero in un contesto logico. Gli operatori di confronto sono elencati nella tabella seguente.

Elenco degli operatori di confronto. Le metavariabili indicate rappresentano gli operandi e la loro posizione.
Operatore e
operandi
Descrizione
<var>op1</var> == <var>op2</var> 
Vero se gli operandi si equivalgono.
<var>op1</var> != <var>op2</var> 
Vero se gli operandi sono differenti.
<var>op1</var> < <var>op2</var> 
Vero se il primo operando è minore del secondo.
<var>op1</var> > <var>op2</var> 
Vero se il primo operando è maggiore del secondo.
<var>op1</var> <= <var>op2</var> 
Vero se il primo operando è minore o uguale al secondo.
<var>op1</var> >= <var>op2</var> 
Vero se il primo operando è maggiore o uguale al secondo.
Quando si vogliono combinare assieme diverse espressioni logiche, comprendendo in queste anche delle variabili che contengono un valore booleano, si utilizzano gli operatori logici (noti normalmente come: AND, OR, NOT, ecc.). Il risultato di un'espressione logica complessa è quello dell'ultima espressione elementare a essere valutata.

Elenco degli operatori logici. Le metavariabili indicate rappresentano gli operandi e la loro posizione.
Operatore e
operandi
Descrizione
! <var>op</var> 
Inverte il risultato logico dell'operando.
<var>op1</var> && <var>op2</var> 
Se il risultato del primo operando è Falso non valuta il secondo.
<var>op1</var> || <var>op2</var> 
Se il risultato del primo operando è Vero non valuta il secondo.
Gnuplot riconosce una serie di funzioni in parte elencate  oltre alla costante pi (solo al minuscolo) che rappresenta il π.

Alcune funzioni riconosciute da Gnuplot.
Funzione Descrizione
rand(<var>op</var>) 
Numero casuale.
int(<var>op</var>) 
Parte intera.
abs(<var>op</var>) 
Valore assoluto.
sqrt(<var>op</var>) 
Radice quadrata.
log10(<var>op</var>) 
Logaritmo in base dieci.
log(<var>op</var>) 
Logaritmo naturale.
exp(<var>op</var>) 
e^x.
sin(<var>op</var>) 
Seno.
cos(<var>op</var>) 
Coseno.
tan(<var>op</var>) 
Tangente.
asin(<var>op</var>) 
Arco-seno.
acos(<var>op</var>) 
Arco-coseno.
atan(<var>op</var>) 
Arco-tangente.
sinh(<var>op</var>) 
Seno iperbolico.
cosh(<var>op</var>) 
Coseno iperbolico.
tanh(<var>op</var>) 
Tangente iperbolica.
Infine, Gnuplot, oltre alla possibilità di creare e assegnare dei valori a delle variabili, può definire delle funzioni. L'esempio seguente definisce la funzione denominata funzione che ha due variabile, x e y, che si traduce nell'espressione x**2 * y:
gnuplot> funzione(x,y) = x**2 * y[Invio]
In seguito, si può utilizzare la funzione appena creata per farci dei calcoli:
gnuplot> print funzione(2,3)[Invio]
12 
Oppure la si può usare per disegnarne il grafico:
gnuplot> splot funzione(x,y)[Invio]
funzione(x,y) = x**2 * y
Naturalmente la stessa cosa vale per le funzioni con una sola variabile.

Script

I file che possono essere indicati alla fine degli argomenti della riga di comando dell'eseguibile gnuplot e quelli che possono essere caricati attraverso il comando load, sono degli script di Gnuplot. La sintassi di questi file è molto semplice: si tratta solo di un elenco di comandi di Gnuplot.

In particolare, se esiste il file ~/.gnuplot, questo viene trattato come uno script da eseguire all'avvio di Gnuplot

A titolo di esempio viene mostrato uno script del genere il cui scopo è quello di mostrare una serie di funzioni come in una sequenza di diapositive:

<strong>#!/usr/bin/gnuplot</strong> # # Sequenza di funzioni con Gnuplot. # plot [-1:1]  2*x title 'f(x) = 2x' pause -1 'premere [Invio] per continuare'  plot [-2:2]  x**2 title 'f(x) = x^2' pause -1 'premere [Invio] per continuare'  plot [-2:100] log(x) title 'log(x)' pause -1 'premere [Invio] per continuare'  plot [-pi:pi]  sin(x) title 'seno' pause -1 'premere [Invio] per continuare'  plot [-pi:pi] tan(x) title 'tangente' pause -1 'premere [Invio] per continuare'  splot [-5:5] [-5:5]  2*x+y title 'f(x,y) = 2x+y' pause -1 'premere [Invio] per continuare'  splot [-5:5] [-5:5] x**2*y title 'f(x,y) = x^2 * y' pause -1 'premere [Invio] per continuare'  splot [-pi/4:pi/4] [-pi/2:pi/2] sin(x)*cos(y) title 'f(x,y) = sin(x)*cos(y)' pause -1 'fine della rappresentazione'

File di dati

Gnuplot è in grado di gestire anche i file di dati, ovvero dei file contenenti solo delle coordinate corrispondenti a punti da rappresentare. Si tratta sempre di file di testo, in cui vengono ignorati i commenti preceduti dal simbolo # oltre alle righe bianche e a quelle vuote, mentre le altre righe contengono coordinate nella forma:
<var>x</var> <var>y</var> <strong class="syn">[</strong><var>z</var><strong class="syn">]</strong> 
Per esempio, la riga seguente rappresenta il punto di coordinata X=1 e Y=2:
1 2 
La riga seguente rappresenta il punto di coordinata X=1, Y=2 e Z=3:
1 2 3 
Per utilizzare questi file si usano, rispettivamente, i comandi plot e splot, indicando come argomento il file:
plot <var>file_di_dati_bidimensionali</var><strong class="syn">[</strong>,<var>file_di_dati_bidimensionali</var><strong class="syn">]</strong>...

splot <var>file_di_dati_tridimensionali</var><strong class="syn">[</strong>,<var>file_di_dati_tridimensionali</var><strong class="syn">]</strong>...
Per indicare un file, occorre far capire a Gnuplot che non si tratta di un'espressione, pertanto va annotato tra apici, doppi o singoli. Per esempio così:
gnuplot> plot "dati.dat"[Invio]
Quando si realizzano degli script di Gnuplot, potrebbe essere più comodo incorporare i dati nello script stesso. Pertanto, i dati da rappresentare possono essere incorporati nei comandi plot e splot:
plot '-' <var>coordinata_x_y</var>    ... e 
splot '-' <var>coordinata_x_y_z</var>    ... e 
L'esempio seguente mostra cinque punti appartenenti alla retta f(x)=x:
plot '-' 0 0 1 1 2 2 3 3 4 4 e 
plot
Per rappresentare più gruppi di punti, occorre indicare più file, separati da una virgola, oppure, per incorporare tutto in uno script, si indica più volte la stringa '-'. L'esempio seguente mostra cinque punti appartenenti alla retta f(x)=x e altri cinque punti (colorati in modo diverso) appartenenti alla retta f(x)=x+1:
plot '-', '-' 0 0 1 1 2 2 3 3 4 4 e 0 1 1 2 2 3 3 4 4 5 e 
plot

Controllare l'uscita grafica

I disegni realizzati con Gnuplot sono diretti normalmente in una finestra di X. Gnuplot controlla il formato delle immagini che crea attraverso il comando set terminal.

set terminal <var>tipo_di_uscita_grafica</var> <strong class="syn">[</strong><var>altri_argomenti</var><strong class="syn">]</strong>

Per esempio, nel caso specifico della rappresentazione normale in una finestra di X, la sintassi diventa:

set terminal x11 <strong class="syn">[</strong>reset<strong class="syn">]</strong> <strong class="syn">[</strong><var>n_finestra</var><strong class="syn">]</strong>

Per la precisione, si possono visualizzare più finestre contemporaneamente, numerate a partire da zero. Utilizzando però la parola chiave reset, si eliminano tutte le finestre.

Alternativamente si può fare in modo di generare un'immagine che non viene visualizzata, ma salvata in un file. La sintassi seguente riguarda la possibilità di generare immagini in formato PNG.

set terminal png <strong class="syn">[</strong>small<strong class="syn">|</strong>medium<strong class="syn">|</strong>large<strong class="syn">]</strong> <strong class="syn">[</strong>monochrome<strong class="syn">|</strong>gray<strong class="syn">|</strong>color<strong class="syn">]</strong> 

Nello schema sintattico, le parole chiave small, medium e large, si riferiscono alla dimensione dei caratteri utilizzati nelle scale e nelle didascalie. Le parole chiave monochrome, gray e color, si riferiscono alla colorazione o meno che devono avere le immagini.
Il comando appena descritto non permette di stabilire la destinazione del file generato, pertanto questa è semplicemente lo standard output. Ciò rende praticamente impossibile la gestione di immagini PNG attraverso l'uso di Gnuplot in modo interattivo. In pratica, si deve realizzare uno script, in modo da poter avviare Gnuplot ridirigendo lo standard output verso il file desiderato. Quello che segue è un esempio banale di un tale script.
# parabola.gnuplot set terminal png medium color plot x**2 
Per generare il file parabola.png, basta il comando seguente:
G N U P L O T Linux version 3.5 (pre 3.6) patchlevel beta 347 last modified Mon Jun 22 13:22:33 BST 1998 Copyright(C) 1986 - 1993, 1998 Thomas Williams, Colin Kelley and many others Send comments and requests for help to info-gnuplot@dartmouth.edu Send bugs, suggestions and mods to bug-gnuplot@dartmouth.edu Terminal type set to 'x11'
gnuplot> splot [-pi:pi] [-pi:pi] x**2 * sin(y)[Invio]

La figura seguente  mostra il risultato di questa funzione, così come appare nella finestra generata dal comando di Gnuplot che è appena stato visto.

Una funzione nello spazio tridimensionale disegnata con Gnuplot.
splot [-pi:pi] [-pi:pi] x**2 * sin(y)
La versione per GNU/Linux di Gnuplot utilizza la libreria Readline per il controllo della riga di comando: questo facilita la sua configurazione (attraverso il file ~/.inputrc) e il riutilizzo di comandi già inseriti, attraverso lo scorrimento dello storico. In pratica, chi utilizza già la shell Bash dovrebbe trovarsi a suo agio di fronte alla riga di comando di Gnuplot.

Avvio e interazione normale.
Di norma, Gnuplot viene avviato attraverso l'eseguibile gnuplot, utilizzando necessariamente una finestra di terminale. Non è previsto l'uso di opzioni speciali, a parte quelle comuni per l'uso di programmi nel sistema grafico X (-geometry, -display, ecc.).


Eventualmente, come si vede dallo schema sintattico, possono essere indicati dei file da caricare ed eseguire. Si tratta di script di Gnuplot, composti semplicemente da una sequenza di comandi che potrebbero essere impartiti attraverso la riga di comando normale dello stesso.

Il disegno delle funzioni avviene attraverso il comando plot, per le curve nello spazio a due dimensioni, e splot, per i piani nello spazio a tre dimensioni. Il funzionamento interattivo di Gnuplot (quello normale che si ottiene quando non si indicano file da caricare) prevede in particolare il comando help per ottenere una guida rapida ai comandi e il comando exit (o quit) per terminarne il funzionamento.
La guida rapida ottenibile con il comando help permette di selezionare degli argomenti particolari che generalmente corrispondono ai nomi dei comandi utilizzabili. Il comando help da solo mostra un'introduzione all'uso di Gnuplot e termina elencando gli argomenti per i quali si possono richiedere informazioni specifiche.

Quando la rappresentazione di una curva o di un piano avviene in un contesto interattivo, si ottiene una finestra, sulla quale è possibile intervenire con l'ausilio del mouse (o di qualunque altra unità di puntamento). Gli schemi successivi riassumono i comandi principali.

 Alcuni comandi disponibili durante la rappresentazione di grafici bidimensionali.
Comando Descrizione
[h] Mostra una guida nelle finestra da cui si danno i comandi di Gnuplot.
clic con il tasto centrale Annota sul grafico le coordinate della posizione in cui si trovata il puntatore grafico.
clic con il tasto destro Inizia la selezione di un'area da ingrandire, ma potrebbe funzionare solo se non è stato specificato il dominio dell'asse X e l'estensione dell'asse Y. Per annullare l'operazione, prima di averla completata, si può premere il tasto [Esc].
[g] Fa apparire o scomparire una griglia sopra il grafico.
[r] Mette o toglie un righello, allineato sulla posizione del puntatore grafico. Quando è attivo il righello, si può leggere la distanza relativa del puntatore grafico rispetto a quella posizione stabilita.
[l] Passa a una scala logaritmica, oppure torna a una scala decimale.

Alcuni comandi disponibili durante la rappresentazione di grafici tridimensionali.
Comando Descrizione
[h] Mostra una guida nelle finestra da cui si danno i comandi di Gnuplot.
clic con il tasto sinistro e trascinamento, oppure uso dei tasti freccia Ruota la proiezione tridimensionale.
clic con il tasto centrale e trascinamento orizzontale Ingrandisce o riduce la rappresentazione, nel suo complesso.
clic con il tasto centrale e trascinamento verticale Amplia o riduce la scala verticale.
[g] Fa apparire o scomparire una griglia per gli assi X e Y.
[l] Passa a una scala logaritmica, oppure torna a una scala decimale.

Comandi comuni.

I comandi di Gnuplot sono numerosi e complessi. Qui viene mostrato solo l'uso di alcuni di questi e in modo elementare, dove in particolare anche gli schemi sintattici vengono semplificati.

In generale, è possibile mettere assieme più comandi in un'unica riga separandoli con il punto e virgola (;); i comandi possono continuare nella riga successiva se si utilizza la barra obliqua inversa (\) esattamente alla fine di una riga da continuare. Alcuni argomenti dei comandi sono delle stringhe, nel senso che non fanno riferimento a parole chiave previste; in tal caso devono essere delimitate con gli apici singoli (') o con gli apici doppi ("), dove le stringhe delimitate con apici doppi espandono alcune sequenze precedute dalla barra obliqua inversa, mentre le altre no.

Una riga di comando di Gnuplot può contenere anche stringhe delimitate da apici inversi (`). In tal caso queste stringhe vengono interpretate come comandi del sistema operativo sottostante e vengono rimpiazzate con il risultato dell'esecuzione del comando stesso.

I comandi possono contenere dei commenti che iniziano nel momento in cui appare il simbolo # e fanno in modo che venga ignorato tutto quello che segue fino alla fine della riga.

Quando un comando prevede l'indicazione di un intervallo di valori, questo viene indicato utilizzando la notazione [inizio:fine], con le parentesi quadre che fanno parte della notazione stessa. Se per qualche motivo si deve indicare un intervallo predefinito in modo esplicito, si possono usare le parentesi aperte e chiuse senza alcuno contenuto: [].

Segue la descrizione di alcuni esempi.
  • gnuplot> help plot[Invio]
    Mostra la guida interna riferita al comando plot.
  • gnuplot> plot sin(x)[Invio]
    Disegna la funzione seno utilizzando una zona predefinita degli assi cartesiani.
    plot sin(x)
  • gnuplot> plot sin(x) title 'seno di x'[Invio]
    Come nell'esempio precedente, indicando la stringa seno di x come didascalia riferita alla curva disegnata.
    plot sin(x) title 'seno di x'
  • gnuplot> plot [-3:3] sin(x) title 'seno di x'[Invio]
    Come nell'esempio precedente, limitando l'ampiezza dell'asse X da -3 a +3.
    plot [-3:3] sin(x) title 'seno di x'
  • gnuplot> plot [-pi:pi] sin(x) title 'seno di x'[Invio]
    Come nell'esempio precedente, limitando l'ampiezza dell'asse X da -π a +π.
    plot [-pi:pi] sin(x) title 'seno di x'
  • gnuplot> plot 'mio_file.gnuplot'[Invio]
    Disegna nello spazio a due dimensioni i punti annotati nel file mio_file.gnuplot che si trova nella directory corrente.
  • gnuplot> splot x**2 * sin(y)[Invio]
    Disegna un piano nello spazio corrispondente alla funzione ottenuta dal quadrato di x moltiplicato per il seno di y.
    splot x**2 * sin(y)
  • gnuplot> splot x**2 * sin(y) title 'quadrato di x per seno di y'[Invio]
    Come nell'esempio precedente, indicando la stringa «quadrato di x per seno di y» come didascalia riferita al piano disegnato.
    splot x**2 * sin(y) title 'quadrato di x per seno di y'
  • gnuplot> splot [-3:3] [-5:5] x**2 * sin(y) \
      \             title 'quadrato di x per seno di y'
    [Invio]
    Come nell'esempio precedente, limitando l'ampiezza dell'asse X da -3 a +3 e quella dell'asse Y da -5 a +5.
    splot [-3:3] [-5:5] x**2 * sin(y) title 'quadrato di x per seno di y'
  • gnuplot> splot [0:pi] [-pi:pi] x**2 * sin(y) \
      \              title 'quadrato di x per seno di y'
    [Invio]
    Come nell'esempio precedente, limitando l'ampiezza dell'asse X da zero a +π e quella dell'asse Y da -π a +π.
    splot [0:pi] [-pi:pi] x**2 * sin(y) title 'quadrato di x per seno di y'
  • gnuplot> splot 'mio_file.gnuplot'[Invio]
    Disegna nello spazio a tre dimensioni i punti annotati nel file mio_file.gnuplot che si trova nella directory corrente.
  • gnuplot> if (1==1) print 'ovvio: 1 è uguale a 1'[Invio]
    Dal momento che la condizione si avvera, mostra la frase «ovvio: 1 è uguale a 1».


Espressioni.

Le espressioni che si possono utilizzare con Gnuplot sono più o meno le stesse dei linguaggi di programmazione più comuni e, in generale, gli spazi orizzontali sono ignorati. Tra le altre cose questo giustifica il motivo per cui diversi tipi di argomenti dei comandi di Gnuplot devono essere definiti come stringhe delimitate.
L'aritmetica di Gnuplot distingue tra numeri interi e numeri a virgola mobile, per cui, utilizzando numeri interi si hanno risultati interi, mentre utilizzando valori a virgola mobile si ottengono risultati a virgola mobile. In pratica:
gnuplot> print 10/3[Invio]
3 
gnuplot> print 10/3.0[Invio]
3.33333333333333 
gnuplot> print 10/2[Invio]
5 
gnuplot> print 10/2.0[Invio]
5.0 
Le costanti numeriche possono essere indicate nei modi consueti, con o senza segno, separando la parte intera da quella decimale attraverso un punto, oppure si può usare anche una notazione esponenziale. Per esempio:
gnuplot> print 1e2[Invio]
100.0 
gnuplot> print 1e-2[Invio]
0.01 
Gli operatori che si possono utilizzare nelle espressioni di Gnuplot sono in pratica quelli del linguaggio C. La tabella 885.20 elenca e descrive gli operatori aritmetici e quelli di assegnamento.
Tabella 885.20. Elenco degli operatori aritmetici e di quelli di assegnamento relativi a valori numerici.
Operatore e
operandi
Descrizione
+<var>op</var> 
Non ha alcun effetto.
-<var>op</var> 
Inverte il segno dell'operando.
<var>op1</var> + <var>op2</var> 
Somma i due operandi.
<var>op1</var> - <var>op2</var> 
Sottrae dal primo il secondo operando.
<var>op1</var> * <var>op2</var> 
Moltiplica i due operandi.
<var>op1</var> / <var>op2</var> 
Divide il primo operando per il secondo.
<var>op1</var> % <var>op2</var> 
Modulo: il resto della divisione tra il primo e il secondo operando.
<var>var</var> = <var>valore</var> 
Assegna alla variabile il valore alla destra.
<var>op1</var> ** <var>op2</var> 
Eleva il primo operando alla potenza del secondo.
Molti degli operatori matematici hanno senso solo perché Gnuplot consente di definire delle variabili al volo, semplicemente assegnandoci un valore. L'esempio seguente assegna alla variabile a il doppio del π:
gnuplot> a = 2*pi[Invio]
Per visualizzarne il contenuto basta utilizzare il comando print:
gnuplot> print a[Invio]
6.28318530717959 
Gli operatori di confronto determinano la relazione tra due operandi. Il risultato dell'espressione composta da due operandi posti a confronto è di tipo booleano, rappresentabile all'interno di Gnuplot come !0, o non-zero (Vero), e zero (Falso), esattamente come accade nel linguaggio C. È importante sottolineare che qualunque valore diverso da zero equivale a Vero in un contesto logico. Gli operatori di confronto sono elencati nella tabella 885.22.
Tabella 885.22. Elenco degli operatori di confronto. Le metavariabili indicate rappresentano gli operandi e la loro posizione.
Operatore e
operandi
Descrizione
<var>op1</var> == <var>op2</var> 
Vero se gli operandi si equivalgono.
<var>op1</var> != <var>op2</var> 
Vero se gli operandi sono differenti.
<var>op1</var> < <var>op2</var> 
Vero se il primo operando è minore del secondo.
<var>op1</var> > <var>op2</var> 
Vero se il primo operando è maggiore del secondo.
<var>op1</var> <= <var>op2</var> 
Vero se il primo operando è minore o uguale al secondo.
<var>op1</var> >= <var>op2</var> 
Vero se il primo operando è maggiore o uguale al secondo.
Quando si vogliono combinare assieme diverse espressioni logiche, comprendendo in queste anche delle variabili che contengono un valore booleano, si utilizzano gli operatori logici (noti normalmente come: AND, OR, NOT, ecc.). Il risultato di un'espressione logica complessa è quello dell'ultima espressione elementare a essere valutata. Gli operatori logici sono elencati nella tabella 885.23.
Tabella 885.23. Elenco degli operatori logici. Le metavariabili indicate rappresentano gli operandi e la loro posizione.
Operatore e
operandi
Descrizione
! <var>op</var> 
Inverte il risultato logico dell'operando.
<var>op1</var> && <var>op2</var> 
Se il risultato del primo operando è Falso non valuta il secondo.
<var>op1</var> || <var>op2</var> 
Se il risultato del primo operando è Vero non valuta il secondo.
Gnuplot riconosce una serie di funzioni in parte elencate nella tabella 885.24, oltre alla costante pi (solo al minuscolo) che rappresenta il π.
Tabella 885.24. Alcune funzioni riconosciute da Gnuplot.
Funzione Descrizione
rand(<var>op</var>) 
Numero casuale.
int(<var>op</var>) 
Parte intera.
abs(<var>op</var>) 
Valore assoluto.
sqrt(<var>op</var>) 
Radice quadrata.
log10(<var>op</var>) 
Logaritmo in base dieci.
log(<var>op</var>) 
Logaritmo naturale.
exp(<var>op</var>) 
e^x.
sin(<var>op</var>) 
Seno.
cos(<var>op</var>) 
Coseno.
tan(<var>op</var>) 
Tangente.
asin(<var>op</var>) 
Arco-seno.
acos(<var>op</var>) 
Arco-coseno.
atan(<var>op</var>) 
Arco-tangente.
sinh(<var>op</var>) 
Seno iperbolico.
cosh(<var>op</var>) 
Coseno iperbolico.
tanh(<var>op</var>) 
Tangente iperbolica.
Infine, Gnuplot, oltre alla possibilità di creare e assegnare dei valori a delle variabili, può definire delle funzioni. L'esempio seguente definisce la funzione denominata funzione che ha due variabile, x e y, che si traduce nell'espressione x**2 * y:
gnuplot> funzione(x,y) = x**2 * y[Invio]
In seguito, si può utilizzare la funzione appena creata per farci dei calcoli:
gnuplot> print funzione(2,3)[Invio]
12 
Oppure la si può usare per disegnarne il grafico:
gnuplot> splot funzione(x,y)[Invio]
funzione(x,y) = x**2 * y
Naturalmente la stessa cosa vale per le funzioni con una sola variabile.

Script .

I file che possono essere indicati alla fine degli argomenti della riga di comando dell'eseguibile gnuplot e quelli che possono essere caricati attraverso il comando load, sono degli script di Gnuplot. La sintassi di questi file è molto semplice: si tratta solo di un elenco di comandi di Gnuplot.
In particolare, se esiste il file ~/.gnuplot, questo viene trattato come uno script da eseguire all'avvio di Gnuplot.
A titolo di esempio viene mostrato uno script del genere il cui scopo è quello di mostrare una serie di funzioni come in una sequenza di diapositive:
<strong>#!/usr/bin/gnuplot</strong> # # Sequenza di funzioni con Gnuplot. # plot [-1:1]  2*x title 'f(x) = 2x' pause -1 'premere [Invio] per continuare'  plot [-2:2]  x**2 title 'f(x) = x^2' pause -1 'premere [Invio] per continuare'  plot [-2:100] log(x) title 'log(x)' pause -1 'premere [Invio] per continuare'  plot [-pi:pi]  sin(x) title 'seno' pause -1 'premere [Invio] per continuare'  plot [-pi:pi] tan(x) title 'tangente' pause -1 'premere [Invio] per continuare'  splot [-5:5] [-5:5]  2*x+y title 'f(x,y) = 2x+y' pause -1 'premere [Invio] per continuare'  splot [-5:5] [-5:5] x**2*y title 'f(x,y) = x^2 * y' pause -1 'premere [Invio] per continuare'  splot [-pi/4:pi/4] [-pi/2:pi/2] sin(x)*cos(y) title 'f(x,y) = sin(x)*cos(y)' pause -1 'fine della rappresentazione'
Nell'esempio viene messa in evidenza la prima riga, che in un sistema Unix o simile, consentirebbe di rendere eseguibile lo script stesso (in tal caso andrebbero comunque aggiunti i permessi di esecuzione).

File di dati
Gnuplot è in grado di gestire anche i file di dati, ovvero dei file contenenti solo delle coordinate corrispondenti a punti da rappresentare. Si tratta sempre di file di testo, in cui vengono ignorati i commenti preceduti dal simbolo # oltre alle righe bianche e a quelle vuote, mentre le altre righe contengono coordinate nella forma:
<var>x</var> <var>y</var> <strong class="syn">[</strong><var>z</var><strong class="syn">]</strong> 
Per esempio, la riga seguente rappresenta il punto di coordinata X=1 e Y=2:
1 2 
La riga seguente rappresenta il punto di coordinata X=1, Y=2 e Z=3:
1 2 3 
Per utilizzare questi file si usano, rispettivamente, i comandi plot e splot, indicando come argomento il file:
plot <var>file_di_dati_bidimensionali</var><strong class="syn">[</strong>,<var>file_di_dati_bidimensionali</var><strong class="syn">]</strong>...

splot <var>file_di_dati_tridimensionali</var><strong class="syn">[</strong>,<var>file_di_dati_tridimensionali</var><strong class="syn">]</strong>...

Per indicare un file, occorre far capire a Gnuplot che non si tratta di un'espressione, pertanto va annotato tra apici, doppi o singoli. Per esempio così:
gnuplot> plot "dati.dat"[Invio]
Quando si realizzano degli script di Gnuplot, potrebbe essere più comodo incorporare i dati nello script stesso. Pertanto, i dati da rappresentare possono essere incorporati nei comandi plot e splot:
plot '-' <var>coordinata_x_y</var>    ... e 
splot '-' <var>coordinata_x_y_z</var>    ... e 
L'esempio seguente mostra cinque punti appartenenti alla retta f(x)=x:
plot '-' 0 0 1 1 2 2 3 3 4 4 e 
plot
Per rappresentare più gruppi di punti, occorre indicare più file, separati da una virgola, oppure, per incorporare tutto in uno script, si indica più volte la stringa '-'. L'esempio seguente mostra cinque punti appartenenti alla retta f(x)=x e altri cinque punti (colorati in modo diverso) appartenenti alla retta f(x)=x+1:
plot '-', '-' 0 0 1 1 2 2 3 3 4 4 e 0 1 1 2 2 3 3 4 4 5 e 
plot

Controllare l'uscita grafica.

I disegni realizzati con Gnuplot sono diretti normalmente in una finestra di X. Gnuplot controlla il formato delle immagini che crea attraverso il comando set terminal.
set terminal <var>tipo_di_uscita_grafica</var> <strong class="syn">[</strong><var>altri_argomenti</var><strong class="syn">]</strong>

Per esempio, nel caso specifico della rappresentazione normale in una finestra di X, la sintassi diventa:

set terminal x11 <strong class="syn">[</strong>reset<strong class="syn">]</strong> <strong class="syn">[</strong><var>n_finestra</var><strong class="syn">]</strong>
Per la precisione, si possono visualizzare più finestre contemporaneamente, numerate a partire da zero. Utilizzando però la parola chiave reset, si eliminano tutte le finestre.
Alternativamente si può fare in modo di generare un'immagine che non viene visualizzata, ma salvata in un file. La sintassi seguente riguarda la possibilità di generare immagini in formato PNG.
set terminal png <strong class="syn">[</strong>small<strong class="syn">|</strong>medium<strong class="syn">|</strong>large<strong class="syn">]</strong> <strong class="syn">[</strong>monochrome<strong class="syn">|</strong>gray<strong class="syn">|</strong>color<strong class="syn">]</strong>


Nello schema sintattico, le parole chiave small, medium e large, si riferiscono alla dimensione dei caratteri utilizzati nelle scale e nelle didascalie. Le parole chiave monochrome, gray e color, si riferiscono alla colorazione o meno che devono avere le immagini.
Il comando appena descritto non permette di stabilire la destinazione del file generato, pertanto questa è semplicemente lo standard output. Ciò rende praticamente impossibile la gestione di immagini PNG attraverso l'uso di Gnuplot in modo interattivo. In pratica, si deve realizzare uno script, in modo da poter avviare Gnuplot ridirigendo lo standard output verso il file desiderato. Quello che segue è un esempio banale di un tale script.
# parabola.gnuplot set terminal png medium color plot x**2 
Per generare il file parabola.png, basta il comando seguente:
G N U P L O T Linux version 3.5 (pre 3.6) patchlevel beta 347 last modified Mon Jun 22 13:22:33 BST 1998 Copyright(C) 1986 - 1993, 1998 Thomas Williams, Colin Kelley and many others Send comments and requests for help to info-gnuplot@dartmouth.edu Send bugs, suggestions and mods to bug-gnuplot@dartmouth.edu Terminal type set to 'x11'
gnuplot> splot [-pi:pi] [-pi:pi] x**2 * sin(y)[Invio]
La figura seguente mostra il risultato di questa funzione, così come appare nella finestra generata dal comando di Gnuplot che è appena stato visto.
Una funzione nello spazio tridimensionale disegnata con Gnuplot.
splot [-pi:pi] [-pi:pi] x**2 * sin(y)
La versione per GNU/Linux di Gnuplot utilizza la libreria Readline per il controllo della riga di comando: questo facilita la sua configurazione (attraverso il file ~/.inputrc) e il riutilizzo di comandi già inseriti, attraverso lo scorrimento dello storico. In pratica, chi utilizza già la shell Bash dovrebbe trovarsi a suo agio di fronte alla riga di comando di Gnuplot.

Avvio e interazione normale

Di norma, Gnuplot viene avviato attraverso l'eseguibile gnuplot, utilizzando necessariamente una finestra di terminale. Non è previsto l'uso di opzioni speciali, a parte quelle comuni per l'uso di programmi nel sistema grafico X (-geometry, -display, ecc.).

Eventualmente, come si vede dallo schema sintattico, possono essere indicati dei file da caricare ed eseguire. Si tratta di script di Gnuplot, composti semplicemente da una sequenza di comandi che potrebbero essere impartiti attraverso la riga di comando normale dello stesso.
Il disegno delle funzioni avviene attraverso il comando plot, per le curve nello spazio a due dimensioni, e splot, per i piani nello spazio a tre dimensioni. Il funzionamento interattivo di Gnuplot (quello normale che si ottiene quando non si indicano file da caricare) prevede in particolare il comando help per ottenere una guida rapida ai comandi e il comando exit (o quit) per terminarne il funzionamento.
La guida rapida ottenibile con il comando help permette di selezionare degli argomenti particolari che generalmente corrispondono ai nomi dei comandi utilizzabili. Il comando help da solo mostra un'introduzione all'uso di Gnuplot e termina elencando gli argomenti per i quali si possono richiedere informazioni specifiche.
Quando la rappresentazione di una curva o di un piano avviene in un contesto interattivo, si ottiene una finestra, sulla quale è possibile intervenire con l'ausilio del mouse (o di qualunque altra unità di puntamento). Gli schemi successivi riassumono i comandi principali.
Tabella 885.3. Alcuni comandi disponibili durante la rappresentazione di grafici bidimensionali.
Comando Descrizione
[h] Mostra una guida nelle finestra da cui si danno i comandi di Gnuplot.
clic con il tasto centrale Annota sul grafico le coordinate della posizione in cui si trovata il puntatore grafico.
clic con il tasto destro Inizia la selezione di un'area da ingrandire, ma potrebbe funzionare solo se non è stato specificato il dominio dell'asse X e l'estensione dell'asse Y. Per annullare l'operazione, prima di averla completata, si può premere il tasto [Esc].
[g] Fa apparire o scomparire una griglia sopra il grafico.
[r] Mette o toglie un righello, allineato sulla posizione del puntatore grafico. Quando è attivo il righello, si può leggere la distanza relativa del puntatore grafico rispetto a quella posizione stabilita.
[l] Passa a una scala logaritmica, oppure torna a una scala decimale.
Tabella 885.4. Alcuni comandi disponibili durante la rappresentazione di grafici tridimensionali.
Comando Descrizione
[h] Mostra una guida nelle finestra da cui si danno i comandi di Gnuplot.
clic con il tasto sinistro e trascinamento, oppure uso dei tasti freccia Ruota la proiezione tridimensionale.
clic con il tasto centrale e trascinamento orizzontale Ingrandisce o riduce la rappresentazione, nel suo complesso.
clic con il tasto centrale e trascinamento verticale Amplia o riduce la scala verticale.
[g] Fa apparire o scomparire una griglia per gli assi X e Y.
[l] Passa a una scala logaritmica, oppure torna a una scala decimale.

Comandi comuni

I comandi di Gnuplot sono numerosi e complessi. Qui viene mostrato solo l'uso di alcuni di questi e in modo elementare, dove in particolare anche gli schemi sintattici vengono semplificati.
In generale, è possibile mettere assieme più comandi in un'unica riga separandoli con il punto e virgola (;); i comandi possono continuare nella riga successiva se si utilizza la barra obliqua inversa (\) esattamente alla fine di una riga da continuare. Alcuni argomenti dei comandi sono delle stringhe, nel senso che non fanno riferimento a parole chiave previste; in tal caso devono essere delimitate con gli apici singoli (') o con gli apici doppi ("), dove le stringhe delimitate con apici doppi espandono alcune sequenze precedute dalla barra obliqua inversa, mentre le altre no.
Una riga di comando di Gnuplot può contenere anche stringhe delimitate da apici inversi (`). In tal caso queste stringhe vengono interpretate come comandi del sistema operativo sottostante e vengono rimpiazzate con il risultato dell'esecuzione del comando stesso.
I comandi possono contenere dei commenti che iniziano nel momento in cui appare il simbolo # e fanno in modo che venga ignorato tutto quello che segue fino alla fine della riga.

Segue la descrizione di alcuni esempi.
  • gnuplot> help plot[Invio]
    Mostra la guida interna riferita al comando plot.
  • gnuplot> plot sin(x)[Invio]
    Disegna la funzione seno utilizzando una zona predefinita degli assi cartesiani.
    plot sin(x)
  • gnuplot> plot sin(x) title 'seno di x'[Invio]
    Come nell'esempio precedente, indicando la stringa seno di x come didascalia riferita alla curva disegnata.
    plot sin(x) title 'seno di x'
  • gnuplot> plot [-3:3] sin(x) title 'seno di x'[Invio]
    Come nell'esempio precedente, limitando l'ampiezza dell'asse X da -3 a +3.
    plot [-3:3] sin(x) title 'seno di x'
  • gnuplot> plot [-pi:pi] sin(x) title 'seno di x'[Invio]
    Come nell'esempio precedente, limitando l'ampiezza dell'asse X da -π a +π.
    plot [-pi:pi] sin(x) title 'seno di x'
  • gnuplot> plot 'mio_file.gnuplot'[Invio]
    Disegna nello spazio a due dimensioni i punti annotati nel file mio_file.gnuplot che si trova nella directory corrente.
  • gnuplot> splot x**2 * sin(y)[Invio]
    Disegna un piano nello spazio corrispondente alla funzione ottenuta dal quadrato di x moltiplicato per il seno di y.
    splot x**2 * sin(y)
  • gnuplot> splot x**2 * sin(y) title 'quadrato di x per seno di y'[Invio]
    Come nell'esempio precedente, indicando la stringa «quadrato di x per seno di y» come didascalia riferita al piano disegnato.
    splot x**2 * sin(y) title 'quadrato di x per seno di y'
  • gnuplot> splot [-3:3] [-5:5] x**2 * sin(y) \
      \             title 'quadrato di x per seno di y'
    [Invio]
    Come nell'esempio precedente, limitando l'ampiezza dell'asse X da -3 a +3 e quella dell'asse Y da -5 a +5.
    splot [-3:3] [-5:5] x**2 * sin(y) title 'quadrato di x per seno di y'
  • gnuplot> splot [0:pi] [-pi:pi] x**2 * sin(y) \
      \              title 'quadrato di x per seno di y'
    [Invio]
    Come nell'esempio precedente, limitando l'ampiezza dell'asse X da zero a +π e quella dell'asse Y da -π a +π.
    splot [0:pi] [-pi:pi] x**2 * sin(y) title 'quadrato di x per seno di y'
  • gnuplot> splot 'mio_file.gnuplot'[Invio]
    Disegna nello spazio a tre dimensioni i punti annotati nel file mio_file.gnuplot che si trova nella directory corrente.
  • gnuplot> if (1==1) print 'ovvio: 1 è uguale a 1'[Invio]
    Dal momento che la condizione si avvera, mostra la frase «ovvio: 1 è uguale a 1».


Ricerca personalizzata







Se ti è piaciuto l'articolo, iscriviti al feed per tenerti sempre aggiornato sui nuovi contenuti del blog:












Trovato questo articolo interessante? Condividilo sulla tua rete di contatti in Twitter, sulla tua bacheca su Facebook, in Linkedin, Instagram o Pinterest. Diffondere contenuti che trovi rilevanti aiuta questo blog a crescere. Grazie!

LINKEDIN