next up previous contents
suivant: Solutions des exercices monter: intsci précédent: Programmation   Table des matières

Sous-sections

Graphiques

Un tel environnement ne peut avoir de sens sans la possibilité de sorties graphiques. Scilab possède un jeu suffisamment étendu de fonctions graphiques 2d et 3d. De plus il permet l'appel à des fonctions d'affichage de bas niveau qui, le cas échéant, peuvent permettre de concocter des rendus de toute sorte.

Affichage 2d : commande plot

Figure 4.1: Sortie simple avec ou sans titre
\includegraphics[clip=false,scale=.4,angle=0]{plot_0.eps} \includegraphics[clip=false,scale=.4,angle=0]{plot_1.eps}
La fonction plot est la plus simple et la moins paramétrable des fonctions graphiques. Sa syntaxe est de la forme :
-->x=0:0.1:10;
-->plot(x.^2)
-->plot(x,x.^2) // rendu identique a la premiere syntaxe
-->plot(x,x.^2,'sur les x','sur les y','En titre')
Cette fonction sera délaissée ou seulement utilisée pour avoir un affichage rapide en ligne du tracé d'un tableau de valeurs.

Fenêtre graphique et commandes génériques

L'appel de la fonction plot a ouvert une fenêtre graphique faisant apparaître quatre nouveaux boutons
Figure 4.2: Menu de la fenêtre graphique
\includegraphics[clip=false,scale=1,angle=0]{Barplot.eps}





Il est tout à fait possible d'ouvrir plusieurs fenêtres simultanément. Par défaut, lors d'un appel à une fonction graphique (plot ...), la fenêtre n^&cir#circ;0 est ouverte. La commande xset('window',num) permet d'ouvrir et/ou de basculer dans différentes fenêtres.

-->x=0:0.1:2*%pi;
-->plot(x,exp(cos(x))) // affichage dans le fenêtre courante
-->xset('window',1)    // ouvre la fenêtre 1
-->plot(x,cos(exp(x))) // affichage dans le fenêtre 1
-->xset('window',0     // rétabli le fenêtre 0 comme fenêtre courante
-->xdel(1)             // ferme la fenêtre 1
Apparaît la commande xdel4.1 qui ferme la fenêtre graphique.

Pour effacer le contenu d'un fenêtre taper xclear(num)4.2 ou xbasc(num).

La commande plot2d

Cette fonction, avec ces différentes options, sera d'un usage courant et immodéré pour grand nombre d'applications.

En premier lieu il est possible comme dans le cas de la fonction plot de ne spécifier qu'un tableau de valeurs ou un couple abscisses ordonnées plot2d(x,y)4.3

-->x=0:0.1:10;
-->plot2d(x.^2)
-->plot2d(x,x.^2)
Néanmoins, sous cette forme on peut afficher plusieurs courbes simultanément, pour cela il suffit de passer en argument une matrice en lieu et place des abscisses et ordonnées; les colonnes sont les valeurs à tracer :
Figure 4.3: sin(x),sin(2x),sin(3x) sur $ [0,2\pi ]$
\includegraphics[clip=false,scale=.5,angle=0]{plot2d_1.eps}
Figure 4.4: sin(x),sin(2x),sin(3x) sur $ [0,2\pi ]$, $ [2\pi ,4\pi ]$, $ [4\pi ,6\pi ]$
\includegraphics[clip=false,scale=.5,angle=0]{plot2d_2.eps}
--> x=[0:0.1:2*%pi]';
--> plot2d(x,[sin(x) sin(2*x) sin(3*x)])
ou encore
--> x=[0:0.1:2*%pi]';xx=[x,x+2*%pi,x+4*%pi];
--> plot2d(xx,[sin(x) sin(2*x) sin(3*x)])
La règle étant : soit, comme dans ce cas, les abscisses sont représentées par un vecteur colonne et donc commun à l'ensemble des ordonnées (fig 4.3), soit il y a autant de colonnes en abscisses et en ordonnées, et les couples abscisses ordonnées sont affichés (fig 4.4).

plot2d offre la possibilité de définir un certain nombre d'attributs que peuvent être la couleur du trait, continu ou pointillé, les valeurs maximales et minimales ... Toutes ces options possèdent une syntaxe de la forme

plot2d(x,y,nom_option1=valeur1,nom_option2=valeur2...)

Dans la suite, est donné un aperçu de quelques options utiles de plot2d.


\bgroup\color{black}\fbox{\textbf{Choix de la couleur et du trait : }}\egroup nom_option : style=...

La couleur ou le mode de tracé (en continu ou point) est géré par le nom d'option style. C'est un tableau ligne d'entiers, avec un attribut pour chaque courbe, i.e. de taille le nombre de colonnes des ordonnées. Il spécifie la couleur (par défaut 1,2,...nombre de colonnes de ``y''). Une valeur positive correspond à une couleur (4.64.4) et une valeur négative ou nulle remplace l'affichage continu par un symbole (voir la table de correspondance 4.5).

Figure 4.5: Tableau de correspondances pour ``style'' négatif
\begin{figure}\begin{center}
\begin{tabular}{\vert c\vert c\vert c\vert c\vert c...
...&$\nabla$&$\clubsuit$&$\bigcirc$\\
\hline
\end{tabular}\end{center}\end{figure}

Figure 4.6: Table de correspondances des couleurs : getcolor()
\includegraphics[clip=false,scale=1.,angle=0]{getcolor.eps}

Voici un exemple de commande (voir résultat figure 4.7)

--> x=[0:0.1:2*%pi]';
--> plot2d(x,[sin(x) cos(x)],style=[-7,14])
Figure 4.7: Utilisation de plot2d avec option ``style=[-7,14]''
\includegraphics[clip=false,scale=0.5,angle=0]{plot2d_style.eps}
Il est tout à fait possible de passer le style en argument implicite4.5 en faisant
--> plot2d(x,[sin(x) cos(x)],[-7,14])
le tableau style doit impérativement être en 3ème position.



\bgroup\color{black}\fbox{\textbf{Choix de la zone de donnée ou \lq\lq range'' : }}\egroup nom_option : rect=...

A chaque appel de plot2d les valeurs maximales et minimales sont évaluées pour offrir un affichage qui permet de voir la courbe en entier. Dans le cas de plusieurs appels successifs de la commande plot2d, les courbes sont superposées mais de plus, en cas de changement de valeurs extrêmes, les courbes sont ré-affichées pour permettre une visualisation simultanée (voir exemple qui suit)

--> x1=[0:0.1:2*%pi]';
--> x2=[-5:0.1:5]';
--> plot2d(x1,sin(x1),1);
--> plot2d(x2,exp(x2),2);

Néanmoins en spécifiant une option de la forme rect=[xmin,ymin,xmax,ymax], sont imposées les coordonnées de la fenêtre d'affichage. Ceci peut permettre par exemple un ``zoom'' sur une partie de la courbe4.6.

Figure 4.8: plot2d(x,[sin(x) cos(x)],leg='sin(x)@cos(x)',rect=[-2,-1,8,1.3],style=[-2,5])
\includegraphics[clip=false,scale=0.5,angle=0]{plot2d_opt.eps}



\bgroup\color{black}\fbox{\textbf{Nommer les courbes : }}\egroup nom_option : leg=...

Il est agréable de lire explicitement sur un graphique rempli de courbes qui correspond à quoi. Pour cela, il est possible d'utiliser l'option leg=chaîne de caractères pour voir apparaître en bas à droite de la courbe un petit trait de couleur ou le symbole de la courbe suivi de sa nomination. Dans le cas de plusieurs courbes, est passé en argument de leg une seule chaîne de caractère avec les différents champs séparés par un ``@''.

--> x=[0:0.1:2*%pi];
--> plot2d(x,[sin(x) cos(x)],leg='sin(x)@cos(x)');



\bgroup\color{black}\fbox{\textbf{Graduer les axes : }}\egroup nom_option : nax=...

Il est possible de choisir le nombre de graduation et de sous graduation par axe en spécifiant nax=[nx,Nx,ny,Ny], Nx et Ny représentent le nombre de graduation, tandis que nx et ny celui de la sous graduation (entre chaque graduation).



\bgroup\color{black}\fbox{\textbf{Échelles logarithmiques : }}\egroup

Pour obtenir un affichage suivant une échelle logarithmique sur l'axe vertical ou horizontal, il suffit de rajouter dans l'appel de plot2d deux caractères prenant les valeurs ``n'' pour normal et ``l'' pour logarithme de la manière suivante

-->x=logspace(1,3,10);
-->plot2d('ln',x,log(x)) \\ axe x en echelle log, y echelle normale
-->plot2d('ll',x,x.^2)   \\ axes x et y en echelle log



\bgroup\color{black}\fbox{\textbf{Options avancées : }}\egroup nom_option : strf='xyz'

Il y a de multiples façon d'afficher un graphique, en recalculant les échelles pour obtenir a courbe entière, afficher les axes, graduation isométrique... Ces attributs ont une réelle importance si l'on cherche à afficher sur le même système d'axes plusieurs courbes ou parties de courbe possédant des caractéristiques différentes comme le nombre de point par exemple.

Pour introduire l'utilité de l'option strf dans plot2d partons sur le dernier exemple cité, avec deux tableaux de dimension différentes, de tel sorte qu'un appel de plot2d ne peux suffire

-->x0=linspace(0,3,30);
-->x1=linspace(1,2,20);
-->plot2d(x0,sin(x0))  // premier appel
-->plot2d(x1,cos(x1),3,strf='000')//second sans changer d'axes
Figure 4.9: Utilisation de strf='000' pour superposer deux courbes
\includegraphics[clip=false,scale=0.5,angle=0]{plot2dstrf.eps}

D'une manière générale et sytématique strf='xyz' avec la table de correspondance

x
0 Pas de légende
1 Légendes affichées (voir leg)
y
0 Utilisation des bornes et échelle du dernier appel de plot2d
1 Echelle standard, bornes spécifiées par rect
2 Echelle standard, bornes calculées suivant les valeurs de x et y
3 Echelle isométrique, bornes spécifiées par rect
4 Echelle isométrique, bornes calculées suivant les valeurs de x et y
5 Graduation élargie, bornes spécifiées par rect
6 Graduation élargie, bornes calculées suivant les valeurs de x et y
z
0 rien n'est dessiné autour du dessin
1 les axes sont dessinés, l'axe y est dessiné à gauche.
2 le dessin est entouré d'une boîte sans graduations.
3 les axes sont dessinés, l'axe y est dessiné à droite
4 les axes sont dessinés au milieu du cadre
5 les axes sont dessinés de maninière à se croiser au point (0,0).
Si ce point (0,0) ne se situe pas dans le cadre, les axes n'apparaissent pas.

Légende

Avec les options de plot2d il est possible de faire apparaître le nom des courbes, mais il existe une possibilité souvent plus esthétique c'est la commande legends
-->t=0:0.1:2*%pi;
-->plot2d(t,[cos(t'),sin(t')],[-1,2]);  
-->legends(["sin(t)";"cos(t)"],[-1,2])
La syntaxe générale est legends( nom_courbes, couleur, position ), avec

 $&bull#bullet;$
nom_courbes un tableau verticale des chaînes de caractères correspondants aux labels voulus.

 $&bull#bullet;$
couleur tableau correspondant à l'option style de plot2d pour le choix des couleurs ou marques (taille identique à nom_courbes).

 $&bull#bullet;$
position

si cette option n'est pas spécifiée, alors le cadre est positionné à l'aide de la souris

si position est un vecteur [x,y], ce dernier représente le coin en haut à gauche du cadre de légende.

si position est un entier, alors : 1 = en haut à droite, 2 en haut à gauche, 3 en bas à gauche, 4 en bas à droite et 5 spécifie le placement interactif avec la souris.

Figure 4.10: Mise en valeur avec legends et xtitle.
\includegraphics[clip=false,scale=0.5,angle=0]{legends.eps}
La commande xtitle permet d'enjoliver les sorties graphiques par l'ajout d'un titre et d'intitulés d'axes.
-->xtitle('Utilisation de Legends')

Autre primitives graphiques 2d

Il existe trois variantes4.7 de plot2d, chacune obéissant aux mêmes règles dans le choix des options.

\bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{plot2d2.eps}\egroup \bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{plot2d3.eps}\egroup
plot2d2 fonction escalier plot2d3 barres verticales
\bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{plot2d4.eps}\egroup \bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{champ1.eps}\egroup
plot2d3 parcours fléché champ1 champ de vecteur (colorés)
\bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{contour2d.eps}\egroup \bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{grayplot.eps}\egroup
contour2d de \bgroup\color{black}$ sin(x)cos(y)$\egroup grayplot de \bgroup\color{black}$ sin(x)cos(y)$\egroup





Il existe différentes fonctions d'affichage avec pour chacun une syntaxe particulière, le lecteur avisé consultera le manuel des fonctions correspondantes. En voici une énumération avec une visualisation dans les différentes variantes.

\bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{histplot.eps}\egroup \bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{errbar.eps}\egroup
histplot histogramme errbar barres verticales d'erreurs

\bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{polarplot.eps}\egroup \bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{graypolarplot.eps}\egroup
polarplot Tracé en coordonnées polaires graypolarplot équivalent de grayplot

Il existe également des fonctions d'affichage spécifique utilisé en théorie du signal et automatisme4.8

\bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{bode.eps}\egroup \bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{chart.eps}\egroup
bode chart
\bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{gainplot.eps}\egroup \bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{zgrid.eps}\egroup
gainplot zgrid

Affichage 3d

La commande générique d'affichage tridimensionnelle est la fonction plot3d.

\bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{plot3d.eps}\egroup \bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{plot3d1.eps}\egroup
plot3d plot3d1
\bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{plot3d3.eps}\egroup \bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{contour.eps}\egroup
plot3d3 contour
\bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{hist3d.eps}\egroup \bgroup\color{black}\includegraphics[clip=false,scale=0.35,angle=0]{param3d.eps}\egroup
hist3d param3d


next up previous contents
suivant: Solutions des exercices monter: intsci précédent: Programmation   Table des matières
2003-10-15