Académique Documents
Professionnel Documents
Culture Documents
3. TP 3 : TRACE DE GRAPHES
3.1 INTRODUCTION
L’un des points forts de MATLAB est la possibilité de créer facilement des graphes clairs, de
les personnaliser, de les sauvegarder et de les imprimer. Dans ce chapitre, nous présentons les
diverses fonctions permettant de tracer des graphes en 2 et 3 dimensions, et les fonctions
permettant de personnaliser ces graphes.
3.2 TRACER UN VECTEUR EN FONCTION D’UN AUTRE
La fonction plot permet de tracer un vecteur en fonction d’un autre. Comme pour la plupart
des fonctions d’affichage de graphes, il existe plusieurs manières de faire appel à cette
fonction ; tout dépend de ce qu’on souhaite accomplir. La syntaxe la plus simple pour tracer
un vecteur est tout simplement « plot(vecteur) » :
plot([1 2 3 2 1]);
Dès que vous appuierez sur entrée, une nouvelle fenêtre devrait s’ouvrir avec le graphe
suivant :
Le vecteur donné à la fonction plot a été tracé. Chacune des valeurs a été interprétée comme
une ordonnée. Comme nous n’avons pas spécifié de vecteur pour les abscisses, Matlab a pris
par défaut un vecteur [1 2 3 4 5]. Vous voyez donc que la courbe tracée relie les points de
coordonnées (1;1),(2;2),(3;3),(4;2) et (5;1). Par défaut, Matlab relie toujours les points de la
courbe tracée. Il est possible de l’empêcher de le faire ; nous verrons comment faire plus loin.
La plupart du temps, vous chercherez à spécifier les vecteurs x et y séparément. Il faudra alors
spécifier un vecteur des abscisses à la fonction plot. La syntaxe sera
« plot(abscisses,ordonnées) ». Par exemple, si on veut tracer les points du vecteur ci-
dessus aux abscisses [0.1, 0.2, 0.3, 0.4, 0.5], on écrira :
1
Etablissement : USTHB
Document : TP 3 : Tracé de graphes
Module : Info 3
Enseignant : L. Demri
A l’exécution, le graphe semblera similaire au précédent, mais vous constaterez sur l’axe des
x que les valeurs de y sont maintenant placées sur les points 0.1 à 0.5.
Notez que les valeurs du vecteur x ne doivent pas forcément être placées à des intervalles
réguliers. Vous pouvez par exemple définir x comme [1 2 3 4 8]. Vous obtiendrez alors le
graphe suivant :
D’autre part, les valeurs de x ne doivent pas forcément aller de la plus petite à la plus grande.
Définir x comme étant le vecteur [1 3 2 5 4] donnera le résultat suivant :
Remarque : Lorsque vous avez tracé une figure et que vous voulez en tracer une autre, celle-
ci est tracée dans la fenêtre contenant la première figure. L’ancien graphe est effacé et
remplacé par le nouveau. Il faut donc basculer vers la fenêtre « Figure 1 » afin de voir le
nouveau graphe. Alternativement, vous pouvez ajouter l’instruction « close all » après
« clear » et « clc » au début de votre programme. L’instruction « close all » ferme toutes
les fenêtres graphiques ouvertes. Ainsi, une fenêtre s’ouvrira à chaque nouvelle exécution de
votre programme.
2
Etablissement : USTHB
Document : TP 3 : Tracé de graphes
Module : Info 3
Enseignant : L. Demri
Vous constatez que le nombre très élevé de points rend la lecture de la courbe difficile. Afin
de zoomer sur une partie de la courbe, cliquez sur la petite loupe contenant un signe + ( ),
puis encadrez la zone de la courbe que vous souhaitez visualiser. Par exemple, si on veut voir
les points compris entre 400 et 500 sur l’axe des x et entre 0.2 et 0.7 sur l’axe des y, on
cliquera sur le point (400,0.7) et on tirera jusqu’au point (500,0.2) :
Lâcher le bouton
gauche ici
3
Etablissement : USTHB
Document : TP 3 : Tracé de graphes
Module : Info 3
Enseignant : L. Demri
Il est ensuite possible de faire défiler la courbe grâce à la fonction « Pan » (icône en forme de
main ).
3.4 TRACER SUR ECHELLE LOGARITHMIQUE
Il arrive que l’évolution de certaines fonctions rendent difficile la visualisation simultanée des
petites et des grandes valeurs. Un exemple typique est la fonction exponentielle. Les valeurs
prennent très rapidement des valeurs très élevées et on ne peut plus apprécier les petites
évolutions de la courbe :
x=1:10;
y=exp(x);
plot(x,y);
Vous constatez sur la figure ci-dessus que la première graduation de l’axe y est à 0.5x104 soit
5000. Pour les abscisses 1, 2 et 3, il semble que la courbe demeure à 0, ce qui n’est pas le cas.
L’échelle logarithmique permet de tracer le graphe sur une échelle non linéaire. Chaque
graduation représente alors une puissance de 10 plutôt qu’une unité.
Il existe 3 fonctions permettant de tracer des graphes sous forme logarithmique :
semilogx : trace la courbe en utilisant une échelle logarithmique pour l’axe des x.
semilogy : trace la courbe en utilisant une échelle logarithmique pour l’axe des y.
loglog : trace la courbe en utilisant une échelle logarithmique pour les 2 axes.
4
Etablissement : USTHB
Document : TP 3 : Tracé de graphes
Module : Info 3
Enseignant : L. Demri
La syntaxe de base de ces fonctions est identique à celle de la fonction plot. Il suffit donc de
remplacer la fonction plot par celle qui convient. Dans notre cas, on souhaite tracer la courbe
en utilisant une échelle logarithmique uniquement pour l’axe des y (l’axe des x ne présente
pas une grande variation entre les grandes et petites valeurs ; ses valeurs n’augmentent pas de
manière exponentielle). On écrira donc :
semilogy(x,y);
Sur l’axe des y, vous voyez que les graduations ne sont plus espacées par intervalles fixes ; les
graduations augmentent maintenant par puissance de 10 (1, 10, 100, 1000, etc).
3.5 TRACER UNE FONCTION
En utilisant la fonction plot, il est possible de tracer une fonction en définissant le vecteur y
comme étant une fonction de x. Ainsi, pour tracer la fonction logarithme, on peut écrire :
x=0:0.1:10;
y=log(x);
plot(x,y)
Une manière plus simple de tracer cette fonction est d’utiliser la fonction « fplot ». Celle-ci
prend comme paramètres une chaîne de caractères et un vecteur représentant l’intervalle sur
lequel on voudra tracer la fonction.
Une chaîne de caractères est un vecteur dont les éléments représentent des caractères
alphanumériques. Sous matlab, on délimite les chaînes de caractère par des apostrophes (‘).
Le texte d’une chaîne de caractères se colore en violet, par exemple : « 'log(x)' ».
Le tracé de la fonction ci-dessus avec la fonction fplot s’écrira :
fplot('log(x)',[0 10]);
Comme vous le voyez, nous n’avons pas eu besoin de créer les vecteurs x et y.
5
Etablissement : USTHB
Document : TP 3 : Tracé de graphes
Module : Info 3
Enseignant : L. Demri
Afin de tracer cette fonction, il faut commencer par évaluer la valeur de à chaque
couple de points x et y. Ceci peut être illustré par un tableau :
1 2 3 4 5
Ce tableau donne les valeurs de z (l’altitude) pour chaque couple de valeurs x et y. A partir de
ce tableau, on sait à quelle altitude représenter chaque point de la « courbe en 2 dimensions1 ».
Le tableau ci-dessus peut être obtenu en appliquant la fonction souhaitée sur les 2 matrices
suivantes :
1
Il s’agit d’une fonction 2D donc on parlera de « plan » plutôt que de « courbe »
6
Etablissement : USTHB
Document : TP 3 : Tracé de graphes
Module : Info 3
Enseignant : L. Demri
la seconde est constituée d’une répétition du vecteur . Ces 2 vecteurs représentent les
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
Y =
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
6 6 6 6 6
On obtient bien :
Z =
4 5 6 7 8
5 6 7 8 9
6 7 8 9 10
7 8 9 10 11
8 9 10 11 12
Une fois la matrice Z obtenue, il est possible de représenter la fonction . Il existe pour
cela 3 fonctions : surf, mesh et contour.
La fonction surf représente la matrice Z sous forme d’une surface. Il s’agit de la fonction
utilisée pour le graphe précédent.
La fonction mesh produit un graphe similaire à celui produit par surf mais la courbe
n’est pas représentée sous forme d’une surface solide mais uniquement sous forme d’un
quadrillage déformé (voir ci-dessous ; à gauche : courbe produite par la fonction surf ; à
droite, courbe produite par la fonction mesh)
7
Etablissement : USTHB
Document : TP 3 : Tracé de graphes
Module : Info 3
Enseignant : L. Demri
La fonction contour représente la matrice Z à travers ses lignes de contour. Les lignes de
contour d’une fonction représentent les lignes pour lesquelles l’altitude z est constante.
L’altitude est généralement représentée par un code de couleurs : bleu pour les valeurs les
plus basses et rouge pour les valeurs les plus élevées. Un exemple est donné pour la fonction
précédente :
Ces trois fonctions prennent toutes les trois comme arguments les matrices X, Y et Z.
surf(X,Y,Z)
Il est cependant possible de ne fournir que la matrice Z (les axes X et Y avanceront alors avec
un pas de 1).
Les graphes tridimensionnels produits par les fonctions mesh et surf peuvent être vus sous
plusieurs angles ; la manière la plus simple de le faire est d’utiliser la fonction rotation 3D
(icône ). Après avoir cliqué sur l’icône, cliquez quelque part sur le graphe et déplacez la
souris en maintenant le clic. Le graphe tournera alors dans le sens où vous avez déplacé la
souris.
8
Etablissement : USTHB
Document : TP 3 : Tracé de graphes
Module : Info 3
Enseignant : L. Demri
subplot(2,3,1);fplot('x^2',[-5,5])
subplot(2,3,2);fplot('exp(x)',[-5,5])
subplot(2,3,3);fplot('sqrt(x)',[-5,5])
subplot(2,3,4);fplot('log(x)',[-5,5])
subplot(2,3,5);fplot('x^2+2*x+4',[-5,5])
subplot(2,3,6);fplot('sin(2*pi*0.1*x)',[-5,5])
fplot('x^2',[-5,5])
figure %On crée une nouvelle fenêtre pour le prochain graphe
fplot('exp(x)',[-5,5])
9
Etablissement : USTHB
Document : TP 3 : Tracé de graphes
Module : Info 3
Enseignant : L. Demri
Notez que la fonction figure doit être appelée avant le prochain tracé. Si nous avions inverti
les deux dernières lignes du programme précédent comme suit :
clear;clc; close all
fplot('x^2',[-5,5])
fplot('exp(x)',[-5,5])
figure
Que s’est-il passé ? Nous avons tracé le premier graphe (celui de la fonction ) dans la
première figure, puis nous avons supprimé ce graphe et l’avons remplacé par celui de la
fonction , toujours dans la figure 1. Ensuite nous avons demandé la création d’une
nouvelle fenêtre… et nous n’y avons rien tracé. Faites donc bien attention à l’ordre des
instructions.
La fonction « figure » peut prendre comme argument un numéro de figure. Par exemple, si
nous écrivons figure(4), le graphe suivant sera toujours tracé dans la figure 4. Si celle-ci
existait, l’ancien graphe sera remplacé par le nouveau ; si elle n’existait pas, elle sera créée à
l’exécution.
10
Etablissement : USTHB
Document : TP 3 : Tracé de graphes
Module : Info 3
Enseignant : L. Demri
Résultat :
Matlab a choisi une courbe par défaut pour chaque courbe. Il est possible de spécifier vous-
même la couleur de chaque courbe (voir plus bas).
Cette méthode fonctionne pour les fonctions autres que plot. Il est possible de tracer ainsi
plusieurs courbes avec les fonctions semilogx, semilogy, et loglog.
3.9.2 En utilisant la commande « hold »
La commande « hold on» permet de maintenir un graphe avant le tracé d’une courbe de sorte
à ce que l’ancienne ne soit pas remplacée par la nouvelle :
11
Etablissement : USTHB
Document : TP 3 : Tracé de graphes
Module : Info 3
Enseignant : L. Demri
Sur l’exemple ci-dessus, vous remarquez qu’on n’a donné l’instruction « hold on» qu’une
seule fois. Il n’a pas été nécessaire d’écrire « hold on» une seconde fois après le second
« plot » pour que la troisième courbe soit tracée sur le même graphe.
L’instruction « hold off » désactive le « hold on» precedent. Si vous ajoutez à la fin du
programme précédent :
hold off
x4=-5:5;
y4=sqrt(x4);
plot(x4,y4)
vous constaterez que seule la dernière courbe est représentée : vu que l’instruction « hold
off » a été donnée, Matlab se remet à effacer toutes les anciennes courbes avant d’en tracer
une nouvelle.
3.10 PERSONNALISATION DES GRAPHES
Il existe plusieurs fonctions permettant de personnaliser les graphes en fonction du besoin de
l’utilisateur.
3.10.1 Spécification des axes d’un graphe
Par défaut, Matlab tracera toujours les graphes de manière à montrer tous les points des
courbes tracées. Il est possible de modifier ce comportement grâce à la fonction « axis ».
Celle-ci prend comme entrée un vecteur représentant les bornes de x et les bornes de y, dans
l’ordre suivant : [xmin xmax ymin ymax].
Le code suivant crée un vecteur de 100 nombres aléatoires puis zoome sur la région comprise
entre 0 et 10 pour l’axe des abscisses et 0 et 1 pour l’axe des ordonnées :
clear;clc; close all
x=rand(1,100)
plot(x);
axis([0 10 0 1]); %On zoome sur la région souhaitée
12
Etablissement : USTHB
Document : TP 3 : Tracé de graphes
Module : Info 3
Enseignant : L. Demri
Notez qu’à l’exécution, le graphe de gauche n’est pas affiché ; il n’est représenté ici qu’à titre
indicatif.
Il est possible de modifier l’axe z pour les graphes à 3 dimensions ; pour cela, le vecteur
spécifiant les axes sera tout simplement complété par zmin et zmax :
[xmin,xmax,ymin,ymax,zmin,zmax].
fplot('x^2',[-5,5]);
xlabel('Axe des abscisses: x'); %Annotation de l’axe x
ylabel('Axe des ordonnées: y=x^2'); %Annotation de l’axe y
13
Etablissement : USTHB
Document : TP 3 : Tracé de graphes
Module : Info 3
Enseignant : L. Demri
Notez que si vous inversez les chaînes de caractères des axes x et y, Matlab affichera quand
même le graphe avec des axes incorrectement annotés. Aucune erreur ne sera renvoyée car
Matlab ne sait pas ce que vous cherchez à faire. C’est donc à vous de faire attention à bien
annoter vos axes.
3.10.3 Intituler un graphe
La fonction « title » permet d’ajouter un titre à un graphe. Comme pour la fonction
« xlabel », elle prend comme argument la chaîne de caractères que vous souhaitez afficher
comme titre du graphe (au dessus du graphe).
clear;clc; close all
fplot('x^2',[-5,5]);
xlabel('Axe des abscisses: x');
ylabel('Axe des ordonnées: y=x^2');
title('Tracé de la fonction y=x^2'); %On ajoute le titre
Ici encore, nous aurions pu écrire n’importe quelle fonction à la place de , Matlab
aurait affiché un titre faux sans renvoyer aucune erreur.
3.10.4 Légendes
Nous avons vu précédemment qu’il était possible de tracer plusieurs courbes sur un même
graphe. Dans ce cas, une légende est en général utile afin de mentionner la couleur de chaque
courbe. Les légendes sont ajoutées grâce à la fonction « legend », qui prend comme
arguments une chaîne de caractères pour chaque courbe tracée. Ajoutons une légende à la
figure de la section 3.9.1 :
clear;clc; close all
x1=-10:10; %Déclaration des vecteurs
y1=x1.^2;
x2=0:10;
y2=x2.^3+200;
x3=-10:0;
y3=-x3.^3+100;
plot(x1,y1,x2,y2,x3,y3); %Tracé du graphe
legend('y=x^2','y=x^3+200','y=-x^3+100'); %Affichage de la légende
14
Etablissement : USTHB
Document : TP 3 : Tracé de graphes
Module : Info 3
Enseignant : L. Demri
La légende s’affiche en haut à droite de la figure. Les légendes sont attribuées selon l’ordre
dans lequel les courbes ont été tracées : la première chaîne de caractères sera attribuée à la
première courbe, la seconde chaîne à la seconde courbe, etc.
3.10.5 Spécifications de la ligne (Couleur, trait, et type de marqueur)
Couleur
Il est possible de modifier la couleur d’affichage d’une courbe en ajoutant un argument à la
fonction que vous utilisez pour la tracer. Dans l’exemple de la section 3.9.2, les trois courbes
ont été tracées de la même couleur. Il est possible de spécifier une couleur en ajoutant un
argument à la suite des vecteurs x et y d’une courbe donnée. L’argument est donné sous forme
d’un caractère représentant la couleur souhaitée :
Caractère Couleur
r Rouge (red)
g Vert (green)
b Bleu (blue)
c Cyan (cyan)
m Magenta (magenta)
y Jaune (yellow)
k Noir (black)
w Blanc (white)
L’exemple suivant montre comment changer les couleurs pour les courbes de la section 3.9.2 :
15
Etablissement : USTHB
Document : TP 3 : Tracé de graphes
Module : Info 3
Enseignant : L. Demri
Notez qu’il est possible de définir la couleur des courbes même si vous avez utilisé des paires
de vecteurs comme nous l’avons vu en 3.9.1. Dans ce cas les paires deviennent des triplets :
plot(x2,y2,'r',x3,y3,'k'); %Trace les 2 courbes en rouge et en noir
Style de trait
Le style du trait désigne le type de trait représenté pour une courbe donnée. Il en existe 4 :
Caractères Style de trait
- Ligne solide
-- Tirets
: Pointillés
-. Pointillés et tirets
Le style de trait d’une courbe est défini exactement de la même manière que la couleur : en
ajoutant les caractères correspondants comme argument à la suite de la paire de vecteurs de la
courbe. Ainsi :
plot(x2,y2,':')
16
Etablissement : USTHB
Document : TP 3 : Tracé de graphes
Module : Info 3
Enseignant : L. Demri
Afin de spécifier plusieurs caractéristiques d’une courbe, il est possible de combiner plusieurs
des caractères précédents. L’exemple suivant trace une courbe rouge, en pointillés-tirets, et
dont les points seront des cercles :
clear;clc; close all
x=-10:10;
y=x.^2;
plot(x,y,'r-.o');
On obtient ainsi :
3.11 CONCLUSION :
Matlab dispose d’une panoplie de fonctions permettant de personnaliser les graphes que vous
tracez de manière quasi-illimitée. Nous n’avons vu ici qu’une partie des possibilités de
personnalisation. Gardez en tête que seule la documentation Matlab contient une liste
complète et détaillée des fonctions et commandes du langage.
17