7 Graphiques avec Scilab

Les primitives graphique Scilab sont nombreuses et il est hors de propos ici de les décrire complètement et de façon exhaustives. Nous donnerons un aperçu et des règles d'utilisation générales et il faudra se reporter aux manuel en ligne pour une utilisation précise de chaque fonction.

Nous commençons par un long script Scilab qui fait un petit tour d'horizon de fonctions graphiques. L'exécution de ce script produit la Figure 4.

=code-book/panorama.tex figure[hbtp] center picture(300.00,212.00) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % If you want to use epsfig, uncomment the following line % and comment the special line % epsfig{file= Figdir linux-des.eps,width=300.00pt,height=212.00pt} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\begin{sessioncmd}
\par -->xbasc();t=linspace(-20*%%pi,20*%pi,2000); \sleftarrow...
...9]') \sleftarrow{appel d'une commande unix }
ans =
\par0.
\par\end{sessioncmd}

Nous commençons par décrire quelques idées générales sur la façon dont le graphique est implémenté dans Scilab. La sortie graphique courante peut être une fenêtre graphique, un fichier au format Postscript, un fichier au format xfig suivant le ``driver'' graphique qui est sélectionné ( on obtient le driver courant avec la commande driver() et on sélectionne un driver au moyen de la même commande avec un argument, par exemple driver('Pos') ou avec la commande xinit ou bien encore de façon totalement transparente en utilisant des menus de Scilab).

Quand on utilise comme driver une fenêtre graphique Scilab a, par défaut, la particularité d'enregistrer toutes les commandes graphiques dans l'ordre ou elles ont été exécutées. Quand on grandit une fenêtre graphique ou quand on effectue un zoom, Scilab peut donc rejouer les commandes enregistrées et et produire un nouveau graphique adapté au changement de taille. De la même façon on peut rejouer les commandes graphiques après avoir changé de driver pour par exemple obtenir un graphique Postcript. C'est ce qui est fait dans le script précédent au moyen de la commande xs2ps.

Le driver courant associé à une fenêtre graphique et qui enregistre les commandes graphiques est le driver Rec. On peut rejouer les commandes graphiques au moyen de la commande xtape ou de la commande xbasr. La commande xbasc permet d'effacer la fenêtre courante et d'effacer en même temps les commandes graphiques enregistrées. détruire une fenêtre graphique xdel à bien sûr le même effet.

Il peut parfois être utile de supprimer l'enregistrement des commandes graphiques, il suffit pour cela de changer le driver et d'utiliser le driver X (ou W) à la place de Rec.

Par défaut aussi les graphiques apparaissent dans une fenêtre graphique au fur et a mesure de leur exécution. Il est possible de changer ce mode par défaut et de contrôler le moment ou la fenêtre graphique est rafraîchie en changeant le mode pixmap de la fenêtre courante.

Le mode pixmap de la fenêtre courante est un paramètre de la fenêtre et il y en a beaucoup d'autres. Ils définissent le contexte graphique d'une fenêtre. On peut avoir à un moment donné plusieurs fenêtre graphique mais on ne peut changer le contexte graphique que de la fenêtre courante. On obtient le numéro de la fenêtre courante au moyen de xget('window') et on change la fenêtre graphique courante par xset('window',n). On obtient les paramètres du contexte graphique de la fenêtre courante au moyen de la fonction xget et on les change au moyen de la fonction xset.

Mais revenons au mode pixmap. Quand ce mode est sélectionné xset('pixmap',1) le graphique n'est plus effectué directement sur la fenêtre graphique mais sur une zone mémoire. La fenêtre graphique n'est rafraîchie que quand la commande xset('wshow') est appelée. On peut effacer la zone mémoire utilisée pour le graphique par wset('wwpc'). On peut ainsi construire des animations graphiques :


\begin{sessioncmd}
\par -->xsetech(frect=[0,0,10,10])
-->xrect(0,10,10,10)
-->n=...
...)
--> xset('wshow')
--> xset('wwpc')
-->end
-->xset('pixmap',0)
\end{sessioncmd}

Un dernier point général est le calcul des échelles graphiques. Les fonctions permettant de dessiner des objets graphiques simples ( par exemple des rectangles xrects, des polylignes xpoly,...) utilisent une échelle graphique courante et il est impératif pour leur utilisation correcte d'avoir d'abord fixé une échelle courante. Cela se fait soit en appelant une fonction de haut niveau, par exemple la fonction plot2d, soit au moyen de la fonction xsetech.

Les fonctions de haut niveau par défaut fixent une échelle courante de façon a ce quelle soit compatible avec les graphiques précédents. On peut contrôler plus précisément les échelles au moyens de paramètres optionnels.



=code-book/plotauto.tex figure[hbtp] center picture(300.00,212.00) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % If you want to use epsfig, uncomment the following line % and comment the special line % epsfig{file= Figdir linux-des.eps,width=300.00pt,height=212.00pt} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


Tableau 6: Fonctions graphiques
champ,champ1,fchamp champs de vecteurs dans le plan
contour,fcontour,contour2d,  
contourf, fcontour2d courbes de niveau
errbar rajoute des barres d'erreurs à une courbe 2D
eval3d,eval3dp,genfac3d utilitaires pour construire des facettes pour un graphique 3D
fec dessin 2D d'une fonction définie sur une triangulation
geom3d calcul de coordonnées
grayplot,fgrayplot courbes de niveau
graypolarplot courbes de niveau sur courbe polaire
hist3d histogramme 3D
histplot histogramme 2D
isoview change les échelles graphiques pour obtenir une représentation
  isométrique
legends rajoute des légendes sur un graphique 2D
Matplot,Matplot1 dessin 2D des valeurs d'une matrice
param3d,param3d1 Courbes paramétrique en 3D
paramfplot2d animation de courbes 2D paramétrées
plot courbes 2D
plot2d,fplot2d ,plot2dxx Courbes 2D
plot3d,plot3d1,fplot3d,  
fplot3d1,plot3d2,plot3d3 dessin 3D d'une surface
polarplot Courbes en coordonnées polaires
Sfgrayplot, Sgrayplot courbes de niveau
subplot subdivise une fenêtre graphique en sous fenêtre



Tableau 7: Primitives Graphiques
xarc,xarcs dessine une (ou plusieurs) ellipse ou une partie d'ellipse
xarrows dessine un ensemble de flèches
xaxis dessine un axe gradué
xclea efface une zone rectangulaire
xclip fixe une zone de clip
xfarc,xfarcs peint une (ou plusieurs) ellipses
xfpoly,xfpolys peint le contenu d'une (ou plusieurs) polyligne
xfrect peint le contenu d'un rectangle
xgrid rajoute une grille sur un graphique
xnumb rajoute des nombres sur un graphique
xpoly,xpolys dessine une (ou plusieurs) polyligne
xrect dessine un rectangle
xrects dessine ou peint un ensemble de rectangles
xrpoly dessine un polygone régulier
xsegs dessine un ensemble de segments non connectés
xstring,xstringb dessine une chaîne de caractères
xstringl coordonnées d'un rectangle entourant le dessin d'une chaîne
  de caractères
xtitle rajoute un titre



;''
Tableau 8: Primitives liées aux fenêtres graphiques
driver choix d'un driver graphique
graycolormap, hotcolormap tables de couleurs
xbasc efface la fenêtre graphique courante et les ordres graphiques enregistrés
xbasimp imprime la fenêtre courante
xbasr redessine le contenu d'une fenêtre graphique
xchange changement de coordonnées
xclear efface la fenêtre courante
xclick attente d'un ``click'' souris
xdel détruit une fenêtre graphique
xend termine une session graphique
xget donne des valeurs du contexte graphique
xgetech donne l'échelle de la fenêtre courante
xgetmouse position et évènement souris
xgraduate,graduate utilitaire pour la graduation des axes
xinfo rajoute une information dans la zone message d'une fenêtre graphique
xinit initialise un driver graphique
xlfont charge des fonts
xload recharge un graphique sauvé par xsave
xname change le nom de la fenêtre graphique courante
xpause pause
xs2fig,xs2gif,xs2ppm,xs2ps convertit le graphique courant au format Xfig, gif, ppm ou Postscript
xsave sauve un graphique dans un format rechargeable avec xload
xselect sélectionne une fenêtre et la met au premier plan
xset fixe des valeurs du contexte graphique
xsetech fixe l'échelle courante
xtape gestion de l'enregistrement des ordres graphiques
xtitle rajoute un titre
winsid retourne la liste des fenêtre graphiques
;''