gnuplot-tcl

 

Ouverture de la liaison gnuplot-Tcl

On va ouvrir un canal de communication pour envoyer des commandes à gnuplot :

 set gp [open "|gnuplot" r+]

Voilà c'est aussi simple !! Pour envoyer une commande à gnuplot, il suffit de diriger vers ce canal notre sortie :

 puts $gp "plot sin(x)"

Quand on en a fini avec gnuplot :

 close $gp

Que peut-on faire ?

L'intérêt de gnuplot réside dans son système de script et de description. Voici l'écran d'affichage sur ma console sous linux :

 $ gnuplot
         G N U P L O T
         Linux version 3.7
         patchlevel 1
         last modified Fri Oct 22 18:00:00 BST 1999
         Copyright(C) 1986 - 1993, 1998, 1999
         Thomas Williams, Colin Kelley and many others
         Type `help` to access the on-line reference manual
         The gnuplot FAQ is available from
         www.ucc.ie/gnuplot/gnuplot-faq.html>
         Send comments and requests for help to
         Send bugs, suggestions and mods to
 Terminal type set to 'x11'
 gnuplot>

voici quelques commandes tapées en mode gnuplot :

 gnuplot> set terminal x11
 Terminal type set to 'x11'
 Options are '0'
 gnuplot> set noborder
 gnuplot> set zeroaxis
 gnuplot> set xtics 1
 gnuplot> set ytics .5
 gnuplot> plot [-2:2] atan(x)

avec le résultat :

et voici les mêmes avec Tcl :

 set gp [open "|gnuplot" r+]
 puts $gp "set term x11"
 puts $gp "set noborder\nset zeroaxis"
 puts $gp "set xtics 1\nset ytics .5"
 puts $gp "plot \[-2:2\] atan(x)"

(pour tester, il est plus facile d'utiliser wish qui n'arrêtera le script à la dernière ligne). On ne coupe pas le tube sinon ... la fenêtre ouverte disparaît (puisque dépendante de gnuplot).

MP Pour afficher tout de suite la fenêtre faire

 flush $gp

et pour la fermer !

 close $gp

Spécial canvas Tk

Voilà une autre version qui permet de tracer le résultat sur un canvas Tk

 set gp [open "|gnuplot" r+]
 puts $gp "set term tk"
 puts $gp "set output 'resultat.tk'"
 puts $gp "set noborder\nset zeroaxis"
 puts $gp "set xtics 1\nset ytics .5"
 puts $gp "plot \[-2:2\] atan(x)"
 close $gp
 pack [canvas .c]
 source resultat.tk
 gnuplot .c

La sortie de gnuplot est dirigée vers le fichier resultat.tk qui contiendra plusieurs procédures tcl qui permettent de tracer sur n'importe quel canvas. Il suffit alors de sourcer le fichier puis d'appeler une des procédures appelée gnuplot qui prend en argument le chemin du canvas. Voici le résultat :


GS (050210) Sous Windows, Gnuplot dispose d'une interface graphique spécifique. Pour pouvoir utiliser Gnuplot [1] à partir d'une autre application, il y a un petit utilitaire dans le répertoire \bin qui se nomme pgnuplot.exe et qui fait la liaison. Le code précédent devient:

 set gpexe C:/gnuplot-4.0/bin/pgnuplot.exe
 set outfile C:/data/resultat.tk

 set gp [open "|$gpexe" r+]
 puts $gp "set term tk"
 puts $gp "set output '$outfile'"
 puts $gp "set noborder\nset zeroaxis"
 puts $gp "set xtics 1\nset ytics .5"
 puts $gp "plot \[-2:2\] atan(x)"
 close $gp

 pack [canvas .c]
 source $outfile
 gnuplot .c