[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
Gnuplot (1) è 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. 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 -P-greco a +P-greco.
$
gnuplot
[Invio]
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 173.2 mostra il risultato di questa funzione, così come appare nella finestra generata dal comando di Gnuplot che è appena stato visto.
|
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.
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 [opzioni] [file_script...] |
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 il disegno di curve nello spazio a due dimensioni, e splot, per il disegno di 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.
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.
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.
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.
gnuplot>
plot [-pi:pi] sin(x) title 'seno di x'
[Invio]
Come nell'esempio precedente, limitando l'ampiezza dell'asse X da -P-greco a +P-greco.
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.
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.
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.
gnuplot>
plot [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 +P-greco e quella dell'asse Y da -P-greco a +P-greco.
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».
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 173.10 elenca e descrive gli operatori aritmetici e quelli di assegnamento.
|
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 P-greco:
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 173.12.
|
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 173.13.
|
Gnuplot riconosce una serie di funzioni in parte elencate nella tabella 173.14, oltre alla costante pi (solo al minuscolo) che rappresenta il P-greco.
|
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]
Naturalmente la stessa cosa vale per le funzioni con una sola variabile.
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.
|
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:
x y [z] |
Per esempio, la riga seguente rappresenta il punto di coordinata X=1 e Y=2:
|
La riga seguente rappresenta il punto di coordinata X=1, Y=2 e Z=3:
|
Eccezionalmente, i comandi plot e splot possono essere utilizzati direttamente per visualizzare una serie di punti senza doverli caricare da un file esterno. Per ottenere questo si utilizzano nel modo seguente:
plot|splot '-' coordinata ... e |
L'esempio seguente mostra cinque punti appartenenti alla retta f(x)=x:
|
In questo stesso modo si possono rappresentare più gruppi di punti, aumentando conseguentemente i trattini che fungono da argomento di plot o di splot. 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:
|
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 tipo_di_uscita_grafica [altri_argomenti] |
Per esempio, nel caso specifico della rappresentazione normale in una finestra di X, la sintassi diventa:
set terminal x11 [reset] [n_finestra] |
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 [small|medium|large] [monochrome|gray|color] |
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.
|
Per generare il file parabola.png
, basta il comando seguente:
$
gnuplot parabola.gnuplot > parabola.png
[Invio]
Eventualmente si può generare anche un'immagine GIF.
set terminal gif [transparent] [interlace] [small|medium|large] \ |
La schema sintattico è più complesso e di conseguenza offre maggiori possibilità. Le dimensioni dei caratteri usati per le scale, i titoli e le didascalie, sono controllate dalle stesse parole chiave viste per il formato PNG. La parola chiave transparent controlla la realizzazione di un disegno con un fondale trasparente; interlace fa in modo di generare un file GIF interlacciato. La dimensione dell'immagine può essere definita attraverso l'opzione size, seguita dalla quantità di punti grafici (pixel) orizzontali e verticali (come si vede dallo schema).
In particolare possono essere controllati i colori, indicati attraverso degli argomenti che vengono posti nella parte finale del comando. Il primo di questi colori si riferisce al fondale, il secondo è quello degli assi X, Y ed eventualmente Z. I colori successivi si riferiscono agli elementi visualizzati (le curve o i piani nello spazio). Gli argomenti che esprimono i colori hanno il formato seguente:
xrossoverdeblu |
I tre colori fondamentali sono espressi da coppie di cifre esadecimali. Per esempio: xffffff è il bianco, x000000 è il nero, xff0000 è il rosso, x00ff00 è il verde e x0000ff è il blu.
|
L'esempio mostra uno script con il quale si vuole generare un file GIF (di dimensioni normali) contenente il grafico della funzione f(z)=(x2)*y, utilizzando dei colori particolari: bianco per lo sfondo, blu per gli assi e verde per il reticolo che rappresenta il piano nello spazio.
Si osservi che i vari formati grafici in cui possono essere resi i disegni di Gnuplot dipendono dal modo in cui questo è stato compilato. In pratica, la disponibilità o meno di un certo formato dipende da delle librerie incluse o meno in fase di compilazione. |
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
1) Gnuplot software libero con licenza speciale
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome gnuplot.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]