Main Content

subplot

Créer des axes dans des mosaïques de figure

Description

exemple

Remarque

Il est recommandé d’utiliser tiledlayout plutôt que subplot car cela permet de créer des dispositions avec un espacement ajustable entre les mosaïques, des mosaïques qui s'adaptent à la taille de la figure, et une meilleure disposition des barres de couleur et des légendes. (depuis R2019b)

subplot(m,n,p) divise la figure actuelle en grille de m x n et crée des axes à la position spécifiée par p. MATLAB® numérote les positions des sous-graphiques par ligne. Le premier sous-graphique est la première colonne de la première ligne, le deuxième est la deuxième colonne de la première ligne, et ainsi de suite. Si des axes existent dans la position spécifiée, cette commande fait de ces axes les axes courants.

exemple

subplot(m,n,p,'replace') supprime les axes existants à la position p et en crée de nouveaux.

subplot(m,n,p,'align') crée de nouveaux axes afin d’aligner les emplacements des tracés. Cette option constitue le comportement par défaut.

exemple

subplot(m,n,p,ax) convertit les axes existants, ax, en sous-graphique dans la même figure.

exemple

subplot('Position',pos) crée des axes dans la position personnalisée spécifiée par pos. Cette option permet de positionner un sous-graphique qui n’est pas aligné sur les positions de la grille. Spécifiez pos comme vecteur à quatre éléments de la forme [left bottom width height]. Si les nouveaux axes chevauchent les axes existants, les nouveaux les remplacent.

subplot(___,Name,Value) modifie les propriétés des axes à l’aide d’une ou plusieurs paire d'arguments de type nom-valeur. Définissez les propriétés des axes après tous les autres arguments en entrée.

exemple

ax = subplot(___) crée un objet Axes, PolarAxes ou GeographicAxes. Utilisez ax pour apporter des modifications futures aux axes.

exemple

subplot(ax) fait des axes spécifiés par ax les axes courants de la figure parente. Cette option ne fait pas de la figure parente la figure courante si elle ne l’est pas déjà.

Exemples

réduire tout

Créez une figure avec deux sous-graphiques empilés (les uns sous les autres). Tracez une onde sinusoïdale dans chacune d’elles.

subplot(2,1,1);
x = linspace(0,10);
y1 = sin(x);
plot(x,y1)

subplot(2,1,2); 
y2 = sin(5*x);
plot(x,y2)

Figure contains 2 axes objects. Axes object 1 contains an object of type line. Axes object 2 contains an object of type line.

Créez une figure divisée en quatre sous-graphiques. Tracez une onde sinusoïdale dans chacun d’eux et donnez-leur chacun un titre.

subplot(2,2,1)
x = linspace(0,10);
y1 = sin(x);
plot(x,y1)
title('Subplot 1: sin(x)')

subplot(2,2,2)
y2 = sin(2*x);
plot(x,y2)
title('Subplot 2: sin(2x)')

subplot(2,2,3)
y3 = sin(4*x);
plot(x,y3)
title('Subplot 3: sin(4x)')

subplot(2,2,4)
y4 = sin(8*x);
plot(x,y4)
title('Subplot 4: sin(8x)')

Figure contains 4 axes objects. Axes object 1 with title Subplot 1: sin(x) contains an object of type line. Axes object 2 with title Subplot 2: sin(2x) contains an object of type line. Axes object 3 with title Subplot 3: sin(4x) contains an object of type line. Axes object 4 with title Subplot 4: sin(8x) contains an object of type line.

Créez une figure contenant trois sous-graphiques. Créez deux sous-graphiques dans la moitié supérieure de la figure et un troisième dans sa moitié inférieure. Ajoutez des titres à chaque sous-graphique.

subplot(2,2,1);
x = linspace(-3.8,3.8);
y_cos = cos(x);
plot(x,y_cos);
title('Subplot 1: Cosine')

subplot(2,2,2);
y_poly = 1 - x.^2./2 + x.^4./24;
plot(x,y_poly,'g');
title('Subplot 2: Polynomial')

subplot(2,2,[3,4]);
plot(x,y_cos,'b',x,y_poly,'g');
title('Subplot 3 and 4: Both')

Figure contains 3 axes objects. Axes object 1 with title Subplot 1: Cosine contains an object of type line. Axes object 2 with title Subplot 2: Polynomial contains an object of type line. Axes object 3 with title Subplot 3 and 4: Both contains 2 objects of type line.

Créez une figure avec quatre tracés à tiges de données aléatoires. Remplacez ensuite le deuxième sous-graphique par des axes vides.

for k = 1:4
    data = rand(1,10);
    subplot(2,2,k)
    stem(data)
end

Figure contains 4 axes objects. Axes object 1 contains an object of type stem. Axes object 2 contains an object of type stem. Axes object 3 contains an object of type stem. Axes object 4 contains an object of type stem.

subplot(2,2,2,'replace')

Figure contains 4 axes objects. Axes object 1 contains an object of type stem. Axes object 2 contains an object of type stem. Axes object 3 contains an object of type stem. Axes object 4 is empty.

Créez une figure avec deux sous-graphiques non alignés sur les positions de la grille. Spécifiez une position personnalisée pour chaque sous-graphique.

pos1 = [0.1 0.3 0.3 0.3];
subplot('Position',pos1)
y = magic(4);
plot(y)
title('First Subplot')

pos2 = [0.5 0.15 0.4 0.7];
subplot('Position',pos2)
bar(y)
title('Second Subplot')

Figure contains 2 axes objects. Axes object 1 with title First Subplot contains 4 objects of type line. Axes object 2 with title Second Subplot contains 4 objects of type bar.

Créez une figure avec deux axes polaires. Créez un graphique à lignes polaires dans le sous-graphique supérieur et un graphique de dispersion polaire dans le sous-graphique inférieur.

figure
ax1 = subplot(2,1,1,polaraxes);
theta = linspace(0,2*pi,50);
rho = sin(theta).*cos(theta);
polarplot(ax1,theta,rho)

ax2 = subplot(2,1,2,polaraxes);
polarscatter(ax2,theta,rho)

Figure contains 2 axes objects. Polaraxes object 1 contains an object of type line. Polaraxes object 2 contains an object of type scatter.

Créez une figure avec deux sous-graphiques. Attribuez les objets Axes aux variables ax1 et ax2. Spécifiez les objets Axes en tant qu’entrées des fonctions de tracé afin de garantir que les fonctions procèdent aux tracés dans un sous-graphique spécifique.

ax1 = subplot(2,1,1);
Z = peaks;
plot(ax1,Z(1:20,:))

ax2 = subplot(2,1,2);  
plot(ax2,Z)

Figure contains 2 axes objects. Axes object 1 contains 49 objects of type line. Axes object 2 contains 49 objects of type line.

Modifiez les axes en définissant les propriétés des objets Axes. Modifiez la taille de la police pour le sous-graphique supérieur et la largeur de ligne pour le sous-graphique inférieur. Certaines fonctions de tracé définissent les propriétés des axes. Exécutez les fonctions de tracé avant de spécifier les propriétés des axes afin d’éviter d’écraser les paramètres existants. Utilisez la notation à point pour définir les propriétés.

ax1.FontSize = 15;
ax2.LineWidth = 2;

Figure contains 2 axes objects. Axes object 1 contains 49 objects of type line. Axes object 2 contains 49 objects of type line.

Créez une figure avec plusieurs sous-graphiques. Stockez les objets Axes dans le vecteur ax. Le deuxième sous-graphique devient alors le graphique contentant les axes courants. Créez un graphique linéaire et modifiez les limites des axes pour le deuxième sous-graphique. Par défaut, les fonctions graphiques ciblent les axes courants.

for k = 1:4
    ax(k) = subplot(2,2,k);
end

subplot(ax(2))
x = linspace(1,50);
y = sin(x);
plot(x,y,'Color',[0.1, 0.5, 0.1])
title('Second Subplot')
axis([0 50 -1 1])

Figure contains 4 axes objects. Axes object 1 is empty. Axes object 2 with title Second Subplot contains an object of type line. Axes object 3 is empty. Axes object 4 is empty.

Créez un tracé linéaire. Convertissez ensuite les axes de manière à ce qu’ils deviennent ceux du sous-graphique inférieur de la figure. La fonction subplot utilise la figure dans laquelle se trouvaient les axes d’origine.

x = linspace(1,10);
y = sin(x);
plot(x,y)
title('Sine Plot')

Figure contains an axes object. The axes object with title Sine Plot contains an object of type line.

ax = gca;
subplot(2,1,2,ax)

Figure contains an axes object. The axes object with title Sine Plot contains an object of type line.

Combinez des axes de figures distinctes dans une même figure avec des sous-graphiques.

Créez deux tracés dans deux figures distinctes. Attribuez les objets Axes aux variables ax1 et ax2. Attribuez l’objet Legend à la variable lgd.

figure
x = linspace(0,10);
y1 = sin(x);
plot(x,y1)
title('Line Plot 1')
ax1 = gca;

Plot of a sine wave entitled "Line Plot 1"

figure
y2 = 2*sin(x);
plot(x,y2)
title('Line Plot 2')
lgd = legend('2*Sin(x)');
ax2 = gca;

Plot of a sine wave with a legend entitled "Line Plot 2"

Créez des copies des deux objets Axes en utilisant copyobj. Spécifiez les parents des axes copiés en tant que nouvelle figure. Les légendes et les barres de couleur ne sont pas copiées avec les axes associés : copiez donc la légende avec les axes.

fnew = figure;
ax1_copy = copyobj(ax1,fnew);
subplot(2,1,1,ax1_copy)

copies = copyobj([ax2,lgd],fnew);
ax2_copy = copies(1);
subplot(2,1,2,ax2_copy)

Figure containing both of the preceding plots

Arguments d'entrée

réduire tout

Nombre de lignes de la grille, spécifié sous forme de scalaire entier positif.

Types de données : single | double

Nombre de colonnes de la grille, spécifié sous forme de scalaire entier positif.

Types de données : single | double

Position de la grille pour les nouveaux axes, spécifiée sous forme de scalaire ou de vecteur de nombres entiers positifs.

  • Si p est un nombre entier positif scalaire, subplot crée un sous-graphique sur la position de grille p.

  • Si p est un vecteur de nombres entiers positifs, alors subplot crée un sous-graphique qui recouvre les positions de la grille répertoriées dans p.

Exemple : subplot(2,3,1) crée un sous-graphique en position 1.

Exemple : subplot(2,3,[2,5]) crée un sous-graphique recouvrant les positions 2 et 5.

Exemple : subplot(2,3,[2,6]) crée un sous-graphique recouvrant les positions 2, 3, 5 et 6.

Types de données : single | double

Position personnalisée pour les nouveaux axes, spécifiée sous forme d’un vecteur à quatre éléments de la forme [left bottom width height].

  • Les éléments left et bottom spécifient la position du coin inférieur gauche du sous-graphique par rapport au coin inférieur gauche de la figure.

  • Les éléments width et height spécifient les dimensions du sous-graphique.

Spécifiez des valeurs comprises entre 0 et 1 qui sont normalisées par rapport à l’intérieur de la figure.

Remarque

Lorsque vous utilisez un script pour créer des sous-graphiques, MATLAB ne finalise la valeur de la propriété Position que lorsqu'une commande drawnow est émise ou que MATLAB reviens en attente d’une commande de l’utilisateur. La valeur de la propriété Position d’un sous-graphique est susceptible d’être modifiée jusqu’à ce que le script rafraîchisse le graphique ou le quitte.

Exemple : subplot('Position',[0.1 0.1 0.45 0.45])

Types de données : single | double

Axes existants à convertir en axes courants ou en sous-graphiques, spécifiés sous forme d’objet Axes, PolarAxes, GeographicAxes ou d’objet graphique avec une propriété PositionConstraint, tel qu’un objet HeatmapChart.

Pour créer des axes polaires ou géographiques vides à l'emplacement d'un sous-graphique, spécifiez ax en tant que fonction polaraxes ou geoaxes. Par exemple, subplot(2,1,2,polaraxes).

Arguments nom-valeur

Spécifiez des paires d’arguments facultatifs en tant que Name1=Value1,...,NameN=ValueN, où Name est le nom de l'argument et Value la valeur correspondante. Les arguments nom-valeur doivent apparaître après les autres arguments, mais l’ordre des paires n’a pas d’importance.

Si votre version est antérieure à la R2021a, utilisez des virgules pour séparer chaque nom et chaque valeur, et placez Name entre guillemets.

Exemple : subplot(m,n,p,'XGrid','on')

Certaines fonctions de tracé effacent et remplacent les propriétés. Pensez à définir les propriétés des axes après la réalisation du tracé. Les propriétés que vous pouvez définir dépendent du type des axes :

Conseils

  • Pour effacer le contenu de la figure, utilisez clf. Vous pouvez par exemple effacer la disposition du sous-graphique existant de la figure avant d’en créer une nouvelle.

  • Pour superposer les axes, utilisez plutôt la commande axes. La fonction subplot supprime les axes existants qui chevauchent de nouveaux axes. Par exemple, subplot('Position',[.35 .35 .3 .3]) supprime tous les axes sous-jacents, mais axes('Position',[.35 .35 .3 .3]) place de nouveaux axes au milieu de la figure sans supprimer les axes sous-jacents.

  • subplot(111) est une exception. Son comportement n’est pas différent de subplot(1,1,1). Pour des raisons de compatibilité avec les version précédentes, subplot(111) est un cas particulier de sous-graphique qui ne crée pas immédiatement des axes, mais qui définit plutôt la figure de telle sorte que la commande graphique suivante exécute clf reset. La commande graphique suivante supprime tous les enfants de la figure et crée de nouveaux axes dans la position par défaut. subplot(111) ne renvoie pas d’objet Axes et une erreur se produit si le code spécifie un argument de retour.

Autres fonctionnalités

Utilisez les fonctions tiledlayout et nexttile pour créer une mosaïque configurable de tracés. Ci-après quelques options de configuration :

  • Contrôle de l’espacement entre les tracés et autour des bords de la disposition

  • Une option pour obtenir un titre partagé en haut de la disposition

  • Options pour les étiquettes partagées des axes x et y

  • Une option permettant de contrôler si la mosaïque a une taille fixe ou variable pouvant être redistribuée

Pour plus d’informations, consultez Combine Multiple Plots.

Historique des versions

Introduit avant R2006a