[successivo] [precedente] [inizio] [fine] [indice generale]
Il punto di forza dei programmi non interattivi è quello di poter essere facilmente utilizzati come anelli di una catena di strumenti o processi; la connessione delle varie parti può essere gestita semplicemente mediante generiche pipeline, o addirittura mediante specifici programmi «wrapper», progettati per uno scopo preciso, che costruiscano programmaticamente l'input da far elaborare.
Un esempio interessante è il programma njgraph.pl di Neil Spring. Si tratta di un piccolo sorgente in Perl che in pratica realizza una specie di programma frontale per Jgraph: esso legge dallo standard input una singola serie di dati da rappresentare graficamente, e dopo averli opportunamente passati a Jgraph per l'elaborazione invoca GV, a meno che lo standard output non venga rediretto. Il programma njgraph.pl riconosce altresì gli attributi marktype, linetype e color (e relativi valori) facoltativamente presenti sulla riga di comando, e li posiziona opportunamente all'interno del sorgente Jgraph prima dell'elaborazione.
La figura 12.1 illustra qualche esempio di invocazione del programma njgraph.pl, mentre la figura 12.2 ne illustra l'output.
Figura 12.1. Invocazione del programma njgraph.pl.
|
Figura 12.2. Output del programma njgraph.pl.
|
Pochi giorni dopo la pubblicazione del presente articolo, ho ricevuto un messaggio di posta elettronica da parte di un lettore. Ecco il frammento rilevante:
|
Ad ulteriore conferma della versatilità degli strumenti come Jgraph, ho realizzato in poco più di mezz'ora(1) il programma data2multijgr.sh (il programma dovrebbe essere disponibile qui: <allegati/xs/data2multijgr_sh>). Il programma, pur essendo molto rudimentale, risolve il problema del lettore. Eccone la sintassi:
data2multijgr.sh [opzione] ... |
ed eccone un utilizzo tipico:
$
cat data
[Invio]
18 4 15 0 2 0 16 3 7 11 12 0 1 9 5 19 8 19 0 13 14 0 19 9 12 3 11 3 10 18 17 0 14 4 1 16 5 9 11 12 1 3 4 14 13 1 13 13 1 5 6 7 18 17 16 10 13 19 13 15 17 3 15 3 7 8 19 4 18 3 16 11 6 13 5 11 14 19 4 15 16 2 2 14 12 10 5 17 9 10 12 18 5 19 13 13 8 13 17 18 8 6 9 14 19 14 6 13 5 2 1 2 17 15 8 1 18 13 18 19 4 2 18 9 13 3 14 1 8 4 11 16 2 0 11 13 7 9 18 4 11 19 18 0 7 7 1 5 12 11 16 8 5 6 18 19 10 4 12 18 0 4 15 2 16 6 15 15 15 6 0 18 5 10 11 4 17 4 1 2 16 18 10 1 4 0 0 14 5 5 13 17 9 8 0 17 6 7 13 13 |
$
cat data | data2multijgr.sh -d 15 -t "Grafico multiplo" -X 40 -x -10 > multi.jgr
[Invio]
$
cat multi.jgr
[Invio]
newgraph title fontsize 50 : Grafico multiplo (1/14) xaxis min -10 max 40 size 5 hash_labels fontsize 30 yaxis min -1 max 15 size 8 hash_labels fontsize 30 newcurve marktype ybar cfill 1 0 0 marksize 1 0.75 pts 18 0 4 1 15 2 0 3 2 4 0 5 16 6 3 7 7 8 11 9 12 10 0 11 1 12 9 13 5 14 newpage newgraph title fontsize 50 : Grafico multiplo (2/14) xaxis min -10 max 40 size 5 hash_labels fontsize 30 yaxis min 14 max 30 size 8 hash_labels fontsize 30 newcurve marktype ybar cfill 1 0 0 marksize 1 0.75 pts 19 15 8 16 19 17 0 18 13 19 14 20 0 21 19 22 9 23 12 24 3 25 11 26 3 27 10 28 18 29 newpage newgraph title fontsize 50 : Grafico multiplo (3/14) xaxis min -10 max 40 size 5 hash_labels fontsize 30 yaxis min 29 max 45 size 8 hash_labels fontsize 30 newcurve marktype ybar cfill 1 0 0 marksize 1 0.75 pts 17 30 0 31 14 32 4 33 1 34 16 35 5 36 9 37 11 38 12 39 1 40 3 41 4 42 14 43 13 44 newpage newgraph ... |
$
cat multi.jgr | jgraph -P > multi.ps
[Invio]
$
Il file multi.ps
che così si ottiene è un file PostScript composto da più pagine ciascuna contenente un grafico relativo a un segmento specifico dei dati (la figura 12.6 riporta per brevità solamente le prime tre pagine).
Figura 12.6. Jgraph: le prime tre pagine di una grafico multiplo, distribuito su 14 pagine, realizzato grazie al programma data2multijgr.sh.
|
La tabella 12.7 riassume le opzioni del programma. Chiunque fosse interessato è invitato adattare il programma data2multijgr.sh alle proprie esigenze, o aggiugervi delle caratteristiche più sofisticate (magari inviando una copia del programma modificato al sottoscritto).
Tabella 12.7. Opzioni del programma data2multijgr.sh. |
Informatica per sopravvivere 2006.02.18 --- Copyright © 2004-2006 Massimo Piai -- <pxam67 (ad) virgilio·it>
1) A dire il vero il programma è stato successivamente limato, ma il prototipo funzionante era pronto dopo il tempo indicato (NdA).
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome utilizzo_programmatico.html