Les fonctions de visualisation de MATLAB manipulent des objets graphiques : figures, systèmes d’axes, lignes, zones de texte…

 

Hiérarchie des objets graphiques

Les objets graphiques sont disposés selon une hiérarchie parent – enfant comme le montre le schéma suivant :

 

Hiérarchie des objets graphiques

 

Root (racine)

  • Objet racine de tous les graphiques : unique;
  • Placé tout en haut de la hiérarchie : tous les objets graphiques sont ses descendants;
  • Créé au démarrage de Matlab;
  • La modification de ses propriétés a une influence sur l’affichage graphique;
  • Handle = 0.

 

Figure

  • Fenêtre individuelle dans laquelle sont affichés les objets graphiques;
  • Pas de limites sur le nombre de figures;
  • Notion de figure courante (current figure) : gcf, cible des affichages.
>> h = figure

 

Core Objects

Regroupe les objets basiques des interfaces graphiques.

 

axes (système d’axes)
  • Région de la figure définie comme zone de tracé graphique;
  • Propriétés permettant d’éditer titre, étiquettes, échelles…;
  • Notion de système d’axes courant (current axes) : gca, cible des affichages ou des configurations.
hax = axes;

 

image
  • Matrice de données dont on définit la coloration (colormap).
him = image(C);

 

line (ligne)

Graphique basique:

  • Créé par les fonctions line, plot, plot3, loglog…
  • La ligne est tracée dans un système d’axes
  • Paramétrage possible de la couleur, de l’épaisseur, des marqueurs…
hli = line(X,Y);

 

patch (polygone)
  • Polygone dont les faces sont colorées;
  • Créé par patch, fill, fill3, contour3…
hpa = patch(X,Y,C);

 

rectangle
  • Objet 2D de type rectangle (arrondi ou non).
hrec = rectangle('Position', [0 0 2 2], 'Curvature', [0.2 0.2]);

 

Surface
  • Représentation 3D d’une matrice de données;
  • La matrice contient les z en fonction des x et y;
  • Objet créé par les fonctions pcolor, surf, mesh…
hsurf = surf(X,Y,Z);

 

text (zone de texte)
  • Affiche une chaîne de caractères;
  • Positionné dans un système d’axes.
htext = text(x,y, 'String');

 

Plot Objects

Regroupe les définis par les fonctions de tracé.

Nom Fonction MATLAB
Aeraseries area
Barseries bar
Contourgroup contour
Errorbarseries errorbar
Lineseries plot et plot3
Quivergroup quiver et quiver3
Scattergroup scatter et scatter3
Stairseries stairs
Stemseries stem et stem3
Surfaceplot surf et mesh

 

UI Objects

Certains de ces objets (comme les boutons, les menus, les cases à cocher) permettent à l’utilisateur d’interagir avec l’interface graphique grâce à la souris ou au clavier. D’autres objets (comme les panels, les tables…) servent à la mise en forme de l’interface graphique.

 

uipanel
  • Panel permettant de grouper graphiquement des composants;
  • Précisant un titre.

 

uicontrol (contrôle de l’interface graphique)
  • Éléments de base d’une interface graphique;
  • Plusieurs types : push button, radio button, list box, edit text, static text…
  • Exécute des callbacks lorsque l’objet est activé.

 

uimenu (menu de l’interface graphique)
  • Menu déroulant;
  • Exécute un callback lorsque l’utilisateur clique sur un élément du menu.

 

Les handles

A la création d’un objet, MATLAB lui attribue automatiquement un identifiant (ou handle), sous la forme d’une valeur numérique unique qui peut être stockée dans une variable. Ceci permet de retrouver à tout moment un objet graphique au cours du fonctionnement d’une interface. Cet identifiant existe tant que l’objet existe. Dès que l’objet est détruit, cet identifiant disparaît.

 

Voici par exemple les identifiants renvoyés lors de la création de divers objets :

>> fig = figure
fig =
1
>> ax = axes
ax =
158.0026
>> ui = uicontrol
ui =
159.0026

 

Quelques fonctions MATLAB permettent de gérer certains identifiants particuliers :

  • gca : récupère l’identifiant de l’objet Axes courant ;
  • gcbf : récupère l’identifiant de l’objet Figure où se trouve l’objet graphique dont l’action est en cours ;
  • gcbo : récupère l’identifiant de l’objet graphique dont l’action est en cours ;
  • gcf : récupère l’identifiant de l’objet Figure courant ;
  • gco : récupère l’identifiant de l’objet graphique courant.

 

Propriétés des objets graphiques

Chaque objet graphique possède des propriétés (position, couleur, action, etc.) Elles sont définies à la création de l’objet et peuvent être modifiées dynamiquement au cours du fonctionnement de l’interface graphique. La difficulté principale consiste à apprendre et à maîtriser ces nombreuses propriétés.

 

Spécifier la valeur d’une propriété (quand cela est possible) :
set(handle, 'Propriété', Valeur);

 

Par exemple, pour créer un objet Figure dont le fond est de couleur rouge :

 >> fig = figure('color',[1,0,0]);

 

Récupérer les valeurs des propriétés d’un objet :
get(handle); % toutes les propriétés
Valeur = get(handle, 'Propriété'); % une en particulier

 

Récupérer les valeurs possibles des propriétés :
set(handle); % pour toutes les propriétés
set(handle, 'Propriété'); % pour une propriété donnée

 

On peut gérer ces propriétés par les fonctions get et set, comme le montre le code suivant :

>> fig = figure('color',[1,0,0]);
>> col = get(fig, 'color')

col =
1     0     0

>> set(fig,'color',[0,1,0]);
>> col = get(fig, 'color')

col =
0     1     0

 

Propriétés principales communes à tous les objets:
  • ButtonDownFcn/Callback : fonction appelée au clic sur l’objet;
  • Children : liste des handles des enfants de l’objet;
  • DeleteFcn : fonction appelée à la destruction de l’objet;
  • HandleVisibility : définit l’accessibilité du handle de l’objet aux commande de la fenêtres de commande ou des routines de callback;
  • HitTest : définit si le clic souris peut rendre l’objet courant ou non;
  • Parent : handle du parent de l’objet;
  • Tag : chaîne de caractères associée à l’objet, le plus souvent pour le nommer;
  • Type : type d’objet (figure, text, line …);
  • UserData : n’importe quelle donnée que l’on associe à l’objet;
  • Visible : définit la visibilité de l’objet.

 

Les composants graphiques

MATLAB définit plusieurs composants graphiques qui vous permettront de faire vos interfaces graphiques.

 

Figure

  • Plusieurs callbacks;
  • Propriétés importantes:
    • NumberTitle, Name;
    • Menubar, Toolbar;
    • Units;
    • Resize.
 Exemple de figure

Push button

  • Bouton poussoir qui revient à l’état initial;
  • Callback exécuté au relâchement de la souris;
  • Propriétés importantes:
    • String : chaîne affichée sur le bouton;
    • Tag : nomme la fonction de callback;
    • CData : image sur le bouton.
 

Toggle button

  • Bouton qui change d’état binaire;
  • Callback exécuté au relâchement de la souris;
  • Propriétés importantes :
    • les mêmes que push button;
    • Value indique l’état du bouton:
      • Si Value = Max, le bouton est pressé;
      • Si Value = Min, le bouton n’est pas enfoncé.
 

 Radio button

  • Bouton à 2 états : sélectionné et désélectionné;
  • Callback exécuté au clic souris;
  • L’exclusion mutuelle doit être codée;
  • Propriétés importantes :
    • String : chaîne affichée à coté du bouton;
    • Value :
      • Si Value = Min, bouton désélectionné;
      • Si Value = Max, bouton sélectionné.
 

 Checkbox

  • Bouton à 2 états : sélectionné et désélectionné;
  • Callback exécuté au clic souris;
  • Propriétés importantes :
    • String : chaîne affichée à coté du bouton;
    • Value :
      • Si Value = Min, bouton désélectionné;
      • Si Value = Max, bouton sélectionné.
 

Edit text

  • Champ éditable;
  • Callback exécuté à la perte du focus;
  • Propriétés importantes:
    • String : chaîne affichée dans le champ éditable:
      • La chaîne doit être convertie pour obtenir des valeurs numériques (str2num, str2double);
    • Tag;
    • Min, Max:
      • Si Max-Min > 1, édition multi-ligne.
 

Static text

  • Texte statique;
  • Propriété importante:
    • String : chaîne affichée sur le composant.
  

Slider

  • Barre permettant à l’utilisateur de fournir une valeur numérique en la déplaçant;
  • Orientation définie par le rapport Largeur/Hauteur;
  • Propriétés importantes:
    • Value : Valeur courante;
    • Max : Valeur max possible;
    • Min : Valeur min possible;
    • SliderStep : Pas de quantification:
      • Lorsqu’on clique sur les flèches;
      • Lorsqu’on clique sur le composant.
 

List Box

  • Affiche une liste de choix sur plusieurs lignes;
  • Callback exécuté au relâchement de la souris;
  • Propriétés importantes :
    • String : contient la liste des choix;
    • Value : contient les indices des éléments sélectionnés (le premier élément a l’indice 1);
    • Min, Max :
      • Si Max – Min > 1, la liste permet la sélection multiple;
      • Si Max – Min <= 1, la liste ne permet pas la sélection multiple.
 

Popup Menu

  • Affiche une liste de choix sur 1 seule ligne;
  • Exécute le callback une fois la sélection terminée;
  • Propriétés importantes:
    • String : contient la liste des choix;
    • Value : contient l’indice de l’élément sélectionné (le premier élément à l’indice 1).
 

Axes

  • N’a pas les mêmes propriétés que les composants précédents;
  • Propriétés importantes:
    • ButtonDownFcn : callback des axes;
    • Box;
    • XGrid, YGrid, ZGrid;
    • XScale, YScale, ZScale.
 

Panel et Button group

  • Permettent d’arranger les composants en groupe;
  • Un button group assure l’exclusivité des radio buttons ou des toggle buttons;
  • Callback au changement de la sélection;
  • Propriétés importantes:
    • Title, TitlePosition.
 

 

Répartition des couches graphiques

Les objets graphiques sont disposés sur différentes couches empilées les unes sur les autres en respectant l’ordre hiérarchique. L’objet Root est toujours situé en dessous, les objets Figure sur l’objet Root, les objets Axes sur leur conteneur Figure… Lorsque plusieurs objets de même niveau (exemple deux objets Axes) sont présents dans le même conteneur parent, leur ordre de visibilité est donné par leur ordre de création. Le dernier créé est au-dessus du précédent. La seule exception vient des objets UI qui sont toujours sur les objets Axes à l’intérieur d’un même objet Figure.

 

Types de callbacks

Ci dessous la liste des callbacks que vous allez rencontrer lorsque vous aller faire des interfaces graphiques:

 

ButtonDownFcn
Déclenché lorsque l’utilisateur clique sur un composant (à 5 pixels près)
Axes, figure, button group, panel, uicontrol
Callback
Action des contrôles
Uicontrol, uimenu
CloseRequestFcn
Quand la figure se ferme
CreateFcn
A la création des composants
DeleteFcn
A la destruction des composants
KeyPressFcn
Lorsque l’utilisateur presse une touche et que le composant a le focus
Figure, uicontrol
KeyReleaseFcn
Lorsque l’utilisateur relâche une touche
Figure
ResizeFcn
Lorsque l’utilisateur (ou la programmation) retaille un composant
Figure, panel, button group
SelectionChangeFcn
Lorsque l’utilisateur change la sélection d’un radio button ou d’un toggle button Button group
WindowButtonDownFcn
Spécifique à la figure
Lorsque l’utilisateur clique sur la figure
WindowButtonMotionFcn
Spécifique à la figure
Lorsque l’utilisateur passe la souris au dessus de la figure
WindowButtonUpFcn
Spécifique à la figure
Lorsque l’utilisateur relâche le bouton de la souris
WindowScrollWheelFc
Spécifique à la figure
Lorsque l’utilisateur utilise la molette de la souris