Contenu principal

Combiner plusieurs tracés

Cet exemple montre comment combiner des tracés sur les mêmes axes avec la fonction hold et comment créer plusieurs axes sur une figure avec la fonction tiledlayout.

Combiner des tracés sur les mêmes axes

Par défaut, les nouveaux tracés effacent les tracés existants et réinitialisent les propriétés des axes telles que le titre. Toutefois, il est possible d’utiliser la commande hold on pour combiner plusieurs tracés sur les mêmes axes. Par exemple, tracez deux lignes et un diagramme de dispersion. Désactivez ensuite la fonctionnalité de hold.

x = linspace(0,10,50);
y1 = sin(x);
plot(x,y1)
title('Combine Plots')

hold on

y2 = sin(x/2);
plot(x,y2)

y3 = 2*sin(x);
scatter(x,y3) 

hold off

Figure contains an axes object. The axes object with title Combine Plots contains 3 objects of type line, scatter.

Lorsque la fonctionnalité de hold est activée, les nouveaux tracés n’effacent pas les tracés existants et ne réinitialisent pas les propriétés des axes telles que le titre ou les étiquettes d’axes. Les tracés utilisent des couleurs et des styles de ligne basés sur les propriétés ColorOrder et LineStyleOrder des axes. Il est possible que les limites et les valeurs de graduation des axes s’ajustent en fonction des nouvelles données.

Afficher plusieurs axes sur une figure

Il est possible d’afficher plusieurs axes sur une même figure avec la fonction tiledlayout. Cette fonction crée une disposition de graphique en mosaïque qui superpose une grille de vignettes invisible sur toute la figure. Chaque vignette contient des axes permettant d’afficher un tracé. Une fois la mosaïque créée, appelez la fonction nexttile pour y placer un objet axes. Appelez ensuite une fonction de tracé pour afficher un tracé sur ces axes. Par exemple, créez deux tracés dans une mosaïque de 2 x 1. Ajoutez un titre à chaque tracé.

x = linspace(0,10,50);
y1 = sin(x);
y2 = rand(50,1);
tiledlayout(2,1)

% Top plot
nexttile
plot(x,y1)
title('Plot 1')

% Bottom plot
nexttile
scatter(x,y2)
title('Plot 2')

Figure contains 2 axes objects. Axes object 1 with title Plot 1 contains an object of type line. Axes object 2 with title Plot 2 contains an object of type scatter.

Créer un tracé qui occupe plusieurs lignes ou colonnes

Pour créer un tracé qui occupe plusieurs lignes ou colonnes, spécifiez l’argument span lorsque vous appelez nexttile. Par exemple, créez une mosaïque de 2 x 2. Affichez des tracés dans les deux premières vignettes. Ensuite, créez un tracé qui occupe une ligne et deux colonnes.

x = linspace(0,10,50);
y1 = sin(x);
y2 = rand(50,1);

% Top two plots
tiledlayout(2,2)
nexttile
plot(x,y1)
nexttile
scatter(x,y2)

% Plot that spans
nexttile([1 2])
y2 = rand(50,1);
plot(x,y2)

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

Modifier l’apparence des axes

Modifiez l’apparence des axes en définissant les propriétés de chacun des objets axes. Vous pouvez obtenir l’objet axes en appelant la fonction nexttile avec un argument en sortie. Vous pouvez également spécifier l’objet axes comme premier argument en entrée d’une fonction graphique pour que cette dernière cible les axes appropriés.

Par exemple, créez deux tracés et affectez les objets axes aux variables ax1 et ax2. Modifiez la taille de police des axes ainsi que la couleur de l’axe des x du premier tracé. Ajoutez une grille au second tracé.

x = linspace(0,10,50);
y1 = sin(x);
y2 = rand(50,1);
tiledlayout(2,1)

% Top plot
ax1 = nexttile;
plot(ax1,x,y1)
title(ax1,'Plot 1')
ax1.FontSize = 14;
ax1.XColor = 'red';

% Bottom plot
ax2 = nexttile;
scatter(ax2,x,y2)
title(ax2,'Plot 2')
grid(ax2,'on')

Figure contains 2 axes objects. Axes object 1 with title Plot 1 contains an object of type line. Axes object 2 with title Plot 2 contains an object of type scatter.

Contrôler l’espacement autour des vignettes

Il est possible de contrôler l’espacement autour des vignettes d’une disposition en mosaïque en spécifiant les propriétés Padding et TileSpacing. Par exemple, affichez quatre tracés dans une mosaïque de 2 x 2.

x = linspace(0,30);
y1 = sin(x);
y2 = sin(x/2);
y3 = sin(x/3);
y4 = sin(x/4);

% Create plots
t = tiledlayout(2,2);
nexttile
plot(x,y1)
nexttile
plot(x,y2)
nexttile
plot(x,y3)
nexttile
plot(x,y4)

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

Réduisez l’espacement autour du périmètre de la mosaïque et autour de chaque vignette en définissant les propriétés Padding et TileSpacing sur 'compact'.

t.Padding = 'compact';
t.TileSpacing = 'compact';

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

Ajouter un titre et des étiquettes d’axes communs

Il est possible d’afficher un titre et des étiquettes d’axes communs à toute la mosaïque. Créez une mosaïque de 2 x 1 nommée t. Ensuite, affichez-y un tracé linéaire et un tracé en bâtons. Synchronisez les limites de l’axe des x en appelant la fonction linkaxes.

x1 = linspace(0,20,100);
y1 = sin(x1);
x2 = 3:17;
y2 = rand(1,15);

% Create plots.
t = tiledlayout(2,1);
ax1 = nexttile;
plot(ax1,x1,y1)
ax2 = nexttile;
stem(ax2,x2,y2)

% Link the axes
linkaxes([ax1,ax2],'x');

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

Ajoutez un titre et des étiquettes d’axes communs en passant t aux fonctions title, xlabel et ylabel. Rapprochez les tracés en supprimant les étiquettes de graduation de l’axe des x du tracé supérieur et en définissant la propriété TileSpacing de t sur 'compact'.

% Add shared title and axis labels
title(t,'My Title')
xlabel(t,'x-values')
ylabel(t,'y-values')

% Move plots closer together
xticklabels(ax1,{})
t.TileSpacing = 'compact';

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

Voir aussi

Fonctions

Rubriques