0% ont trouvé ce document utile (0 vote)
120 vues12 pages

Tracés graphiques avec Scilab

Le document décrit différentes méthodes pour tracer des nuages de points et des courbes dans Scilab, notamment le tracé simple et multiple de points, la gestion des fenêtres graphiques à l'aide des fonctions scf et subplot, et l'utilisation de couleurs distinctes pour les différentes courbes d'un tracé multiple.

Transféré par

Sanders
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
120 vues12 pages

Tracés graphiques avec Scilab

Le document décrit différentes méthodes pour tracer des nuages de points et des courbes dans Scilab, notamment le tracé simple et multiple de points, la gestion des fenêtres graphiques à l'aide des fonctions scf et subplot, et l'utilisation de couleurs distinctes pour les différentes courbes d'un tracé multiple.

Transféré par

Sanders
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ECE1-B 2015-2016

II. Tracé d’un nuage de points


II.1. Tracé simple
CH 8 : Tracés en Scilab Considérons l’ensemble de points : {(1, 9), (2, 2), (3, 5), (4, 4), (5, 7)} dont
on souhaite effectuer le tracé. La première étape consiste à coder cet ensemble
de points en Scilab. Pour ce faire, on utilise deux vecteurs lignes :
• X=[1,2,3,4,5] le vecteur des abscisses.
• Y=[9,2,5,4,7] le vecteur des ordonnées.
I. Introduction : courbe et tracé Le tracé des points se fait par l’appel : plot(X,Y)
I.1. En mathématiques Cette commande provoque l’ouverture de la fenêtre présentée en figure 1.
Considérons une application f : R → R définie sur R. En mathématiques,
on appelle graphe d’une telle application et on note Gf l’ensemble :

Gf = {(x, f (x)) | x ∈ R}

Le graphe d’une fonction est donc l’ensemble des couples (x, y) ∈ R × R qui
satisfont l’équation : y = f (x). Formellement, la courbe de f correspond au
tracé de l’ensemble infini de ces points. Concrètement, on ne peut tracer à
la main chacun de ces points. On se contente donc d’obtenir une allure de la
courbe à l’aide d’une étude graphique : croissance de la fonction, calcul des
tangentes aux points d’intérêt, calcul des asymptotes.
Fig. 1 Premier tracé Fig. 2 Second tracé

I.2. Traduction en Scilab Deux points sont à souligner sur ce premier tracé :
L’approche Scilab est différente de l’approche mathématique consistant • par défaut, les points successifs sont reliés entre eux.
à obtenir l’allure de la courbe. C’est en effet l’approche « point par point » qui
• par défaut, le tracé s’effectue en couleur bleue.
est retenue. Et même si seul un nombre fini de points peut être représenté,
la puissance de calcul permet que ce nombre soit suffisamment grand pour
fournir une très bonne approximation de la courbe souhaitée. Le nuage de Effectuons un nouveau tracé, par exemple : plot(X,X). Comme le montre
points obtenu est alors complété en reliant les paires de points successifs, ce la figure 2, le tracé s’effectue dans la fenêtre précédente et avec la même
qui permet d’obtenir un tracé continu. Deux fonctions permettent de réaliser couleur. Nous développons maintenant plusieurs solutions qui permettent de
ce type de tracés : plot2d et plot. distinguer ces tracés.

1
ECE1-B 2015-2016

II.2. Tracé multiple II.3. Gestion des fenêtre graphiques


Dans l’exemple précédent, on effectue de manière successive deux tracés Jusque là, nous avons réalisé les tracés dans la même fenêtre. On peut
possédant le même vecteur d’abscisse X. Il est en fait possible de réaliser ces aussi souhaiter effectuer le nouveau tracé dans une fenêtre vierge, soit en
deux tracés simultanément, et ce avec un seul appel à la commande plot. De supprimant l’ancien tracé, soit en affichant une nouvelle fenêtre.
manière générale, pour un tracé multiple de n courbes (n > 1), on utilisera
la syntaxe suivante : II.3.a) La fonction scf
plot(abs,[ord1;ord2;...;ordn]) Le terme scf est une abréviation de l’anglais set current graphic figure.
Cette fonction permet de définir la fenêtre graphique courante. On peut en
faire deux utilisations :
Détaillons les différents éléments de cette syntaxe.
• abs : vecteur ligne représentant les abscisses des points à tracer.
• scf() : utilisée sans paramètre, la fonction scf ouvre une nouvelle fenêtre
graphique qui devient la fenêtre courante. Afin de pouvoir identifier cette
• ordi : vecteur ligne représentant les ordonnées des points à tracer.
fenêtre, elle est dotée d’un numéro défini comme le plus grand numéro des
Il est à noter que les vecteurs abs et ordi doivent tous être de même lon- fenêtres déjà ouvertes auquel on ajoute 1.
gueur. Dans le cas contraire, un message d’erreur sera levé.
• scf(num) : utilisée avec le paramètre num, la fonction scf permet de définir
la fenêtre portant le numéro num comme fenêtre courante. Si la fenêtre num
Si l’on reprend l’exemple précédent, l’appel multiple peut donc être ef-
n’existe pas, elle et créée et devient la fenêtre courante.
fectué par la commande plot(X,[Y;X]) qui affiche la fenêtre suivante.
Afin d’illustrer ce mécanisme, on crée les vecteurs lignes :
× Z=X ∧ 2 soit le vecteur [1. 4. 9. 16. 25.]
× T=10?exp(-X) soit le vecteur [3.68 1.35 0.50 0.18 0.07]
On effectue alors les appels suivants.
−−> scf(5); plot(X,Z)
−−> scf(0); plot(X,T)
−−> scf(); plot(X,-X)

• Le premier appel permet de créer la fenêtre graphique numérotée 5. Elle de-


vient la fenêtre graphique courante et accueille de ce fait le tracé plot(X,Z).
Fig. 3 Un tracé multiple • Le deuxième appel fait de la fenêtre 0 (déjà existante) la fenêtre courante.
Elle accueille alors le tracé plot(X,Z).
Ce tracé multiple présente un intérêt pratique : les courbes sont affichées dans
des couleurs différentes. Par défaut, les couleurs utilisées sont, dans l’ordre : • Enfin, le dernier appel crée la fenêtre numérotée 6 (5 + 1) dans laquelle est
bleu, vert, rouge . . . tracé plot(X,-X).

2
ECE1-B 2015-2016

On obtient donc les trois fenêtres distinctes suivantes. II.3.c) La fonction subplot
L’aide de Scilab (help subplot) définit la fonction subplot comme suit.
L’appel subplot(n,p,k) divise la fenêtre graphique courante en une matrice
n×p composée de sous-fenêtres et sélectionne la kème sous-fenêtre comme
emplacement de dessin par défaut. Le numéro de la sous-fenêtre est compté
ligne par ligne, c’est à dire que l’emplacement (i, j) de la matrice porte le
numéro j + n × (i − 1). On insiste sur cette numérotation qui ne correspond
pas à la numérotation linéaire des matrices présentée dans le chapitre précé-
dent (numérotation colonne par colonne).
Fig. 4 Fenêtre 0 Fig. 5 Fenêtre 5 Fig. 6 Fenêtre 6
Pour illustrer ce procédé, on réalise les appels suivants.
Concernant la fenêtre 0, on remarque que le troisième tracé s’effectue par
−−> subplot(2,3,1),plot(X,[Y;X;T])
dessus les précédents tracés et de la même couleur que le premier tracé (bleu).
−−> subplot(2,3,5),plot(X,[Z;10?T])
−−> subplot(2,3,3),plot(X,-X)
II.3.b) La fonction clf
Le terme clf est une abréviation de l’anglais clear current graphic figure. La fenêtre 1 (en position (1, 1)) contient le premier tracé. La fenêtre 5 (en
Cette fonction permet de supprimer le contenu de la fenêtre graphique cou- position (2, 2)) contient le deuxième tracé. La fenêtre 3 (en position (1, 3))
rante. On peut en faire deux utilisations : contient le troisième tracé.
• clf() : utilisée sans paramètre, la fonction clf supprime le contenu de la
fenêtre graphique courante.
• clf(num) : utilisée avec le paramètre num, la fonction clf permet de sup-
primer le contenu de la fenêtre portant le numéro num.
• clf(Vnum) : utilisée avec le vecteur Vnum, la fonction clf permet de sup-
primer le contenu des fenêtres dont le numéro appartient au vecteur Vnum.

Si l’on souhaite supprimer la fenêtre graphique elle-même et pas seule-


ment son contenu, on peut :
× soit le faire à la souris (en cliquant sur la croix).

× soit faire appel à la fonction xdel dont l’utilisation est analogue à celle de
Fig. 7 Matrice de fenêtres graphiques
la fonction clf (même type de paramètre).
Par exemple, xdel([0,5,6]) supprime l’ensemble des fenêtres graphiques.

3
ECE1-B 2015-2016

II.4. Les options de tracé On obtient alors les trois fenêtres suivantes.
II.4.a) Tracé simple
La fonction plot offre un certain nombre d’options de tracés : couleur
du trait, marquage des points, forme du trait. Ces fonctionnalités sont dis-
ponibles via un argument optionnel de la fonction plot. Plus précisément, on
utilisera la syntaxe suivante.
plot(abs,ord,opt)

L’argument optionnel est de type string (apparaît entre guillemets ' ') et Quelques remarques concernant ces options de tracés :
est construit en prenant au plus un élément dans chacun des tableaux (non • dans le dernier appel, nous n’avons pas spécifié d’option pour la forme du
complets) ci-dessous. trait. Ceci annule le tracé reliant les points.
• il n’y a pas d’ordre à respecter lorsque l’on tape les options. Ainsi les
Commande Couleur Commande Marquage
options 'rx:' et ':xr' ont la même interprétation.
r Rouge + Plus • les tableaux précédents ne sont pas complets. Pour plus de détails, se référer

m Magenta o Cercle à Linespec (help Linespec et clic dans le menu gauche).


k Black x Croix
II.4.b) Tracé multiple
g Vert ? Astérisque
Il est aussi possible de spécifier des options de tracé lorsque l’on effectue
des tracés multiples. Il faut alors respecter la syntaxe ci-dessous.
Commande Forme du trait
plot(abs1,ord1,opt1,...,absn,ordn,optn)
- Ligne continue (par défaut)
-- Ligne pointillée (trait) Il est à noter que les arguments sont optionnels : on peut, ou non, les spécifier.
: Ligne pointillée (trait, 2 points) Illustrons ce mécanisme avec le tracé suivant.
-. Ligne pointillée (trait, 1 point) −−> scf(),plot(X,Z,'rx:',X,Y,X,T,'--o')
Illustrons ce mécanisme avec les appels suivants.
Cette commande permet de réaliser trois tracés. Le premier permet de tracer
−−> scf(),plot(X,Z,'rx:') le nuage de points défini par les vecteurs X et Z avec l’option 'rx:'. Le
−−> scf(),plot(X,Y,'m?-.') deuxième tracé réalise le nuage X et Y sans option. Et le dernier représente
−−> scf(),plot(X,T,'b+') le nuage X et Y avec l’option '--o'.

4
ECE1-B 2015-2016

On obtient la fenêtre présentée en figure 8. II.5.b) La fonction legend


La fonction legend permet d’ajouter un légende à la fenêtre graphique
courante. Comme dans le cas de la fonction xtitle, elle s’applique une fois
le graphique obtenu.

Considérons que le tracé précédent définit la fenêtre courante. Illustrons la


syntaxe de la fonction legend à l’aide de l’appel suivant.
−−> legend(["Courbe 1","Courbe 2","Courbe 3"],
"in_upper_left")

• Le premier paramètre de la fonction legend est un vecteur colonne de type


Fig. 8 Un tracé multiple avec options string contenant le nom que l’on souhaite donner à chacun des tracés.
• Le deuxième argument est une chaîne de caractères permettant de spécifier
la position de la légende. Cette chaîne se décrit à l’aide des termes :
II.5. Annoter un graphique : titre et légende × upper ou lower
II.5.a) La fonction xtitle × left ou right
La fonction xtitle permet d’ajouter des annotations dans les fenêtres Il est en fait aussi possible d’utiliser l’option "by_coordinates" qui permet
graphiques : titre général et annotations des axes. Elle s’appelle une fois le de spécifier la position de la légende en cliquant directement sur la figure.
graphique réalisé. Ainsi, le résultat de l’appel à la fonction xtitle s’applique Le résultat de l’appel précédent est présenté en figure 10.
à la fenêtre graphique courante.

Illustrons cette fonctionnalité à l’aide d’un exemple concret.


−−> xtitle("Titre du graphique","Abscisses","Ordonnées")

Cette fonction prend en paramètre entre 1 et 3 arguments de type string. La


première chaîne de caractères (argument obligatoire) définit le titre général
du graphique ; la deuxième permet d’annoter l’axe des abscisses ; la dernière
permet d’annoter l’axe des ordonnées. Le résultat de l’appel précédent est
présenté en figure 9.
Fig. 9 Ajout titre Fig. 10 Ajout légende

5
ECE1-B 2015-2016

II.6. Tracé via la fonction plot2d II.6.b) Les différences entre plot et plot2d
La fonction plot2d est une alternative à la fonction plot. Sa syntaxe de La différence principale entre ces deux fonctions est la gestion des op-
base est proche de celle de la fonction plot. tions de tracés. La fonction plot2d intègre, dans son appel, plus d’options,
notamment la gestion de la légende et la définition d’un cadre d’affichage. Il
II.6.a) Les points communs entre plot et plot2d n’est pas possible d’utiliser la syntaxe présentée dans le paragraphe II.4..
La fonction plot2d partage de nombreuses fonctionnalités avec la fonc-
Afin de détailler les fonctionnalités de la fonction plot2d, on se concentre
tion plot. Plus précisément :
sur un appel.
• tracé simple (II.1.) : on utilisera la syntaxe plot2d(abs,ord) où abs
et ord sont des vecteurs de même nature (deux vecteurs lignes ou deux −−> scf();plot2d(X',[Z;Y;T]',[-3,23,10],leg="Courbe 1
vecteurs colonnes) et de même taille. @Courbe 2@Courbe 3",rect=[-1,-1,8,30])
• tracé multiple (II.2.) : on utilisera ici la syntaxe, légèrement différente
• Les deux premiers paramètres définissent les tracés (cf précédent).
donnée par plot2d(C_abs,[C_ord1,...,C_ordn]). La différence se situe
dans le fait que C_abs et C_ordi sont des vecteurs colonne que l’on sépare • Le troisième paramètre est un vecteur d’entiers relatifs qui permet de dé-
par des « , » et non plus des « ; ». Cette syntaxe par colonnes peut être finir la couleur de chaque tracé (1 nombre par tracé) :
utilisée avec la fonction plot. × un nombre positif définit une couleur et un trait plein.

• gestion des fenêtres (II.3.) : les fonctions scf, clf et subplot s’utilisent × un nombre négatif définit un nuage de points et son marquage.

comme précédent. C’est bien normal : ces fonctions opèrent sur les fenêtres (l’appel getcolor() fournit la correspondance nombre-couleur)
graphiques sans se soucier de comment elles sont créées. • Le quatrième paramètre définit la légende associée à chaque tracé. On
• annotation (II.5.) : la remarque précédente est valide avec les fonctions utilisera la syntaxe : leg="nom_1@...@nom_n" où nom_i est le nom associé
xtitle et legend. au tracé i.
En résumé, il faut simplement veiller à adopter la syntaxe par colonnes. No- (ce paramètre n’étant pas très flexible, il est recommandé d’utiliser legend)
tez que le passage de l’une à l’autre peut se faire très simplement grâce à • Le dernier paramètre de l’appel précédent définit un cadre d’affichage. On
l’opérateur transposée. En effet, la matrice [C_ord1,...,C_ordn]' n’est rien utilisera la syntaxe rect=[xmin,ymin,xmax,ymax] pour définir le cadre
d’autre que la matrice [C_ord1',...,C_ordn']. dont le point bas-gauche est (xmin,ymin) et dont le point haut-droit est
(xmax,ymax).
Ainsi, si X, Y et T sont des vecteurs lignes de même taille, les appels :
× scf();plot(X,[Y;X;T])
On notera que les tracés pointillés ne sont pas pris en charge par la fonc-
× scf();plot(X',[Y;X;T]') tion plot2d. Le paramètre défini par rect doit se voir comme une possibilité
× scf();plot2d(X',[Y;X;T]') de zoom (avant ou arrière). C’est le gain principal que l’on obtient en uti-
sont tous valides et permettent d’obtenir le même tracé. lisant cette fonction. Pour plus de détails, se reporter à la rubrique d’aide
Par contre, l’appel : plot2d(X,[Y;X;T]) fera apparaître un message d’erreur. (help plot2d).

6
ECE1-B 2015-2016

Le résultat de l’appel précédent est représenté en figure 11. Il est intéressant de remarquer qu’avec ce codage, les fonctions f et g peuvent
être utilisées avec n’importe quel objet de type constant. Ainsi, ces fonctions
peuvent prendre en paramètre aussi bien un réel Scilab qu’une matrice de
réels Scilab.

−−> f(3),g(5)
ans =
9.
ans =
0.07
−−> f([1,2,3,4,5]),g([1,2,3,4,5])
ans =
Fig. 11 Un tracé avec plot2d
1. 4. 9. 16. 25.
ans =
On remarque que la légende est mal située et finalement illisible. Comme
3.68 1.35 0.5 0.18 0.07
précisé précédemment, on préférera la fonction legend à l’option leg.

• Concernant la fonction g, cette remarque illustre le fait que la fonction


III. Tracé de fonctions prédéfinie exp peut être utilisée avec des matrices.
Comme précisé en introduction, le tracé d’une fonction se fait point par • Concernant la fonction f, cette remarque n’est pas si anodine. On s’attend
point. La syntaxe précédente peut donc être adaptée au cas des fonctions. en effet à ce que l’appel [1,2,3,4,5] ∧ 2 lève un message d’erreur puisqu’il
Détaillons ce mécanisme à l’aide de deux fonctions exemples : s’agit de faire le produit du vecteur [1,2,3,4,5] par lui-même. En fait,
lorsque le paramètre gauche est un vecteur (ligne ou colonne) et seulement
f : R → R g : R → R dans ce cas, la fonction puissance ( ∧ ) opère comme la fonction puissance
x 7→ x2 x 7→ 10 × e−x terme à terme (. ∧ ).
Avant de refermer cette parenthèse, considérons la fonction fMult, alternative
Parenthèse : un point sur le codage des fonctions à la fonction f.
Commençons par coder les fonctions f et g en Scilab.
// La fonction f codée avec l’opérateur ?
// La fonction f // La fonction g function y = fMult(x)
function y = f(x) function y = g(x) y = x?x
y = x∧2 y = 10?exp(-x) endfunction
endfunction endfunction

7
ECE1-B 2015-2016

Avec cette définition, on obtient une fonction qui ne peut plus être utilisée Ainsi, pour tracer la fonction f, il suffit de :
sur des vecteurs. 1) choisir un vecteur d’abscisses X, rangées dans l’ordre croissant.
−−> fMult([1,2,3,4,5]) 2) calculer le vecteur d’ordonnées correspondant : f(X).
!--error 10 3) réaliser l’appel : plot(X,f(X)).
Multiplication incohérente.
Évidemment, ce mécanisme n’est possible que si la fonction que l’on cherche
III.1. Une première syntaxe à tracer peut prendre un vecteur en paramètre.

On a vu en introduction que le tracé d’une fonction f définie sur R cor- −−> scf();plot(X,fMult(X))
respond à dessiner l’ensemble des points {(x, f (x)) | x ∈ R}. On peut se !--error 10
baser sur cette idée pour effectuer le tracé d’une fonction en Scilab. Multiplication incohérente.

Pour comprendre comment procéder, étudions les appels suivants.


III.2. Une syntaxe plus adaptée aux fonctions
−−> X=-5:5; La syntaxe précédente est celle que nous avons utilisé e début de chapitre
−−> scf();plot(X,f(X)) pour dessiner un nuage de points. Il existe une syntaxe qui insiste plus sur
−−> scf();plot(X,g(X)) la notion de fonction que celle de point.
Le résultat de ces appels est donné en figure 12 et 13.
Il suffit en effet de réaliser l’appel : plot(X,f)
Il est à noter que cette syntaxe peut être utilisée pour des fonctions qui ne
sont pas définies sur les vecteur. Ainsi :
• l’appel plot(X,f) permet de réaliser le tracé de la figure 12.
• l’appel plot(X,g) permet de réaliser le tracé de la figure 13.
• l’appel plot(X,fMult) est lui aussi valide et permet de réaliser le tracé de
la figure 12.
Remarquons enfin que cette syntaxe est compatible avec la fonctionnalité de
tracé multiple ainsi qu’avec la gestion des options. La syntaxe s’écrit alors :
Fig. 12 Fonction f Fig. 13 Fonction g plot(abs1,f1,opt1,...,absn,fn,optn)

où les fi sont des fonctions à un paramètre.

8
ECE1-B 2015-2016

III.3. Contrôle du nombre de points utilisé pour le tracé IV. Tracés d’histogrammes
Les figures issues des appels précédents ne sont pas satisfaisantes. En ef- IV.1. Histogrammes classiques : la fonction histplot
fet, les tracés obtenus ne sont pas suffisamment lisses. Ceci est dû au faible
nombre de points utilisé pour effectuer ces tracés. Les histogrammes sont des outils de représentation graphique des don-
nées qui sont particulièrement fréquents en statistiques. Dans l’exemple clas-
Dans l’exemple précédent, il s’agit de modifier la définition de X afin d’aug- sique d’utilisation, on dispose d’un jeu de données fourni sous la forme d’un
menter le nombre de points dans les tracés. Pour ce faire, deux solutions : vecteur. Analyser cet ensemble de données consiste à en effectuer une répar-
tition selon certaines classes i.e. comptabiliser les données comprises entre
−−> scf(); X=[-5:0.1:5]; plot(X,f) deux bornes a et b, celles entre b et c, celles entre c et d . . .
On obtient le tracé présenté en figure 14.
Commençons par une étude pratique d’un jeu de données aléatoires D.
−−> scf(); X=linspace(-5,5); plot(X,g) −−> D=rand(1,50);
−−> scf();histplot(10,D)
On obtient le tracé présenté en figure 15.
• La première variable D définit un vecteur ligne contenant 50 réels choisis
aléatoirement entre 0 et 1.
• L’appel histplot(10,D) permet de réaliser l’histogramme de répartition
du vecteur D en découpant l’espace en 10 classes.
On obtient le tracé présenté en figure 16.

Fig. 14 Fonction f Fig. 15 Fonction g

L’aspect segmenté a disparu pour laisser la place à des courbes plus lisses.
Les figures obtenues sont donc satisfaisantes. Lorsque cela n’est pas le cas, il
faut encore augmenter le nombre de points de X :
× soit en diminuant le pas 0.1 (dans la première syntaxe).
Fig. 16 Répartition de rand
× soit en ajoutant un troisième argument (nombre n>100) à linspace
(dans la seconde syntaxe).

9
ECE1-B 2015-2016

Il y a plusieurs remarques à faire à la lecture de ce graphique : Testons ces fonctionnalités.


1) Les barres sont de même longueur mais la première ne commence pas en −−> x=0:0.1:1;
0 et la dernière ne se termine pas en 1, ce qui peut paraître étonnant. −−> scf();histplot(x,D,normalization=%f)
M-m −−> x=0:0.5:1;
+ La largeur des classes est obtenue par la formule :
n −−> scf();histplot(x,D,normalization=%f)
où M est le plus grand élément du vecteur de données D, m le plus petit
et n le nombre de classes souhaitées. + Dans le premier appel, les classes ont été définies par le vecteur croissant
[0,0.1,0.2,...,1]. En désactivant l’option de normalisation, on peut
2) Il y a beaucoup d’éléments dans la première classe, peu dans la troisième. lire en ordonnée que la plus grande classe contient 7 éléments et la plus
Cela va à l’encontre de la définition de la fonction rand qui doit réaliser petite en contient 1.
une répartition uniforme. Cet appel est présenté en figure 17.
+ Le problème ne provient ni de rand ni de histplot mais de la taille + Dans le second appel, les classes sont définies par le vecteur [0,0.5,1].
trop faible (50 ici) du jeu de données. Là aussi, la normalisation est désactivée ce qui permet de lire que la
première classe contient 24 éléments et la seconde 26. Dans ce cas, le
3) Ce qui est représenté en ordonnée n’est pas très clair. On s’attendait à fait d’avoir des classes plus grossières donne un aspect plus uniforme à la
pouvoir lire en ordonnée le nombre d’éléments de chaque classe. répartition. On note cependant que pour tester correctement le caractère
+ Par défaut, la fonction histplot réalise un tracé normalisé. uniforme de la distribution fournie par rand, il faudra utiliser des vecteurs
N(b) de données plus grand (5000 éléments par exemple).
La hauteur de chaque barre b est obtenue par :
N(D) × L(b) Cet appel est présenté en figure 18.
où N(b) est le nombre d’éléments de la barre b, N(D) est le nombre
d’éléments du vecteur D, L(b) est la largeur de la barre b.

La fonction histplot peut être paramétrée de sorte à contourner les


difficultés évoquées aux points 1) et 3) .
• histplot(x,D) : au lieu de réaliser un appel par nombre de classes, on
peut spécifier précisément les classes dans un vecteur d’éléments croissants.
Deux éléments successifs du vecteur définissent une classe.
• normalization=%f : pour supprimer la normalisation, il suffit d’attribuer
la valeur %f à l’option normalization. On peut alors lire en ordonnée le
nombre d’éléments de chaque classe. Fig. 17 Avec classes précisées Fig. 18 Avec 2 classes

10
ECE1-B 2015-2016

IV.2. Histogrammes multi-barres : la fonction bar + Dans le second appel, on a précisé l’option 'stacked' (empilé en anglais),
qui permet d’obtenir un histogramme empilé.
Dans certains cas, les éléments du jeu de données sont triés non seulement
Cet appel est présenté en figure 20.
par classes mais aussi à l’aide d’un autre indicateur. Ainsi, chaque classe est
elle-même découpée en sous-classe. La représentation graphique associée à
ce genre de cas est un histogramme multi-barres dans lequel chaque classe
est représentée par plusieurs barres.

Illustrons ce cas par un exemple concret.


Une entreprise dispose de 4 magasins (qui définissent les classes). Dans cha-
cun de ces magasins, elle vend 3 sortes de produits notés A, B, C (qui dé-
finissent les sous-classes). Les dirigeants songent à une restructuration pour
mettre en avant les produits phares de chaque magasin (deux produits au
plus par magasin). Les vecteurs suivants représentent le nombre de vente de
A, B, C (dans cet ordre) dans chaque magasin.
Fig. 19 Multi-barres Fig. 20 Multi-barres empilées
−−> M1=[323,106,67];
−−> M2=[194,52,86]; La figure 20 peut paraître étonnante, notamment le dessin de la troisième
−−> M3=[60,66,50]; barre qui semble ne pas contenir de produit A (en bleu). Le problème provient
−−> M4=[208,182,146]; des bornes de la fenêtre graphique (choisies automatiquement en Scilab) et
notamment des ordonnées qui commencent en 50 au lieu de 0.
Pour réaliser un histogramme multi-barres, on fait appel à la fonction bar.
IV.3. Titres, légendes et étiquettes des axes
−−> M=[M1;M2;M3;M4];
−−> scf();bar(1:4,M) Ajouter un titre et des légendes se fait comme précédemment. Autrement
−−> scf();bar(1:4,M,'stacked') dit, on utilise la fonction xtitle pour ajouter un titre au graphique et aux
axes et la fonction legend pour insérer une légende.
+ La matrice M est la matrice de données dont chaque ligne représente les
ventes d’un magasin. Rappelons ces mécanismes sur la fenêtre graphique courante.
+ Dans le premier appel, le rôle du vecteur [1,2,3,4] est de préciser où
doit être effectué le tracé. En fait, on pourrait directement réaliser l’appel −−> xtitle("Vente en 2013/2014","Magasins région
parisienne","Quantité de produits");
bar(M) puisque, si on ne le précise pas, le vecteur 1:nc (où nc est le
−−> legend(["Produit A","Produit B","Produit C"],
nombre de colonnes i.e. la longueur de chaque ligne) est choisi par défaut. "in_upper_left");
Cet appel est présenté en figure 19.

11
ECE1-B 2015-2016

Pour les histogrammes il est aussi intéressant de nommer les différentes Modification de l’objet Axes courant
classes. La procédure est plus compliquée que pour les titres et légendes.
Revenons à notre question de départ. On souhaite modifier l’étiquetage
Pour pouvoir la comprendre, il faut s’intéresser à aux entités graphiques
de l’axe des abscisses i.e. modifier un paramètre de l’objet Axes courant.
dans Scilab.
−−> a=gca();
Entités graphiques en Scilab −−> a.x_ticks.labels=["Mag 1";"Mag 2";"Mag 3";"Mag 4"];

En Scilab, les entités graphiques obéissent à une hiérarchie arborescente. D’autre part, on peut en profiter pour modifier les bornes du cadre du dessin.
Tout en haut de cette hiérarchie (i.e. à la racine de l’arbre), se trouve une Le rectangle précédent avait pour point bas gauche (0.5,50) et pour point
entité appelée Figure. haut droit (4.5,550). Agrandissons ce cadre pour qu’il soit défini du point
• L’entité Figure : cette entité définit les paramètres de la fenêtre graphique. (0.5,0) au point droit (4.5,600).

+ gcf() : abréviation de get current figure. Permet d’accéder à la figure −−> a=gca();
courante. L’appel gcf() affiche les propriétés de l’objet Figure : des −−> a.data_bounds=[0.5,0;4.5,600];
paramètres modifiables et des fils (children en anglais).
+ Les paramètres modifiables concernent les éléments en dehors du tracé. Le tracé obtenue est représenté en figure 21. On rappelle que le fond a été
On peut notamment changer la couleur de l’arrière plan (background) modifié lors de l’étude de l’entité Figures, ce qui explique la couleur bleu
de la figure comme le montre l’appel suivant. clair entourant le cadre.

−−> f=gcf();
−−> [Link]=4;

+ L’entité Figure admet l’entité Axes comme fils, qui et donc le deuxième
niveau de la hiérarchie des entités graphiques.
• L’entité Axes : définit les paramètres du cadre de dessin.
+ gca() : abréviation de get current axes. L’appel gca() affiche les pa-
ramètres modifiables de l’objet Axes et ses fils.
+ Les paramètres modifiables sont les éléments du cadre de dessin :
bornes / découpage / étiquetage des axes. Fig. 21 Avec étiquetage
+ L’entité Axes admet l’entité Coumpound comme fils (non développé ici).
Pour plus de détails on pourra accéder à la rubrique d’aide correspondante
par l’appel help "graphic entities".

12

Vous aimerez peut-être aussi