Main Content

Abbinamento di più grafici

Da R2019b. Sostituisce Combine Multiple Plots (R2019a).

Questo esempio mostra come abbinare i grafici sugli stessi assi utilizzando la funzione hold e come creare più assi in una figura utilizzando la funzione tiledlayout.

Abbinamento di grafici sugli stessi assi

Per impostazione predefinita, i nuovi grafici eliminano i grafici esistenti e ripristinano le proprietà degli assi, come il titolo. Tuttavia, è possibile utilizzare il comando hold on per abbinare più grafici sugli stessi assi. Ad esempio, tracciare due linee e un grafico a dispersione. Quindi reimpostare lo stato hold su off.

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.

Quando lo stato hold è impostato su on, i nuovi grafici non eliminano quelli esistenti e non ripristinano le proprietà degli assi, come il titolo o le etichette degli assi. I grafici alternano i colori e gli stili delle linee in base alle proprietà ColorOrder e LineStyleOrder degli assi. I limiti degli assi e i valori delle tacche potrebbero adattarsi ai nuovi dati.

Visualizzazione di più assi in una figura

È possibile visualizzare più assi in una singola figura utilizzando la funzione tiledlayout. Questa funzione crea un layout a piastrelle di un grafico contenente una griglia invisibile di piastrelle sull'intera figura. Ciascuna piastrella può contenere un asse per la visualizzazione di un grafico. Dopo aver creato un layout, chiamare la funzione nexttile per inserire un oggetto assi nel layout. Quindi, chiamare una funzione di plottaggio per tracciare il grafico sugli assi. Ad esempio, creare due grafici in un layout 2x1. Aggiungere un titolo a ciascun grafico.

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.

Creazione di grafici che si estendono su più righe o colonne

Per creare un grafico che si estende su più righe o colonne, specificare l'argomento span quando si chiama nexttile. Ad esempio, creare un layout 2x2. Tracciare nelle prime due piastrelle. Quindi, creare un grafico che si estende su una riga e due colonne.

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.

Modifica dell'aspetto degli assi

Modificare l'aspetto degli assi impostando le proprietà di ciascun oggetto assi. È possibile ottenere l'oggetto assi chiamando la funzione nexttile con un argomento di output. È inoltre possibile specificare l'oggetto assi come primo argomento di input di una funzione grafica per garantire che la funzione punti agli assi corretti.

Ad esempio, creare due grafici e assegnare gli oggetti assi alle variabili ax1 e ax2. Modificare la dimensione del carattere degli assi e il colore dell'asse x per il primo grafico. Aggiungere linee della griglia al secondo grafico.

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.

Controllo della spaziatura intorno alle piastrelle

È possibile controllare la spaziatura tra le piastrelle di un layout specificando le proprietà Padding e TileSpacing. Ad esempio, visualizzare quattro grafici in un layout 2x2.

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.

Ridurre la spaziatura lungo il perimetro del layout e intorno a ciascuna piastrella impostando le proprietà Padding e TileSpacing su '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.

Visualizzazione del titolo condiviso e delle etichette condivise degli assi

È possibile visualizzare un titolo condiviso e le etichette condivise degli assi in un layout. Creare un layout t 2x1. Quindi, visualizzare un grafico a linee e un grafico a stelo. Sincronizzare i limiti dell'asse x chiamando la funzione 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.

Aggiungere un titolo condiviso e le etichette condivise degli assi passando t alle funzioni title, xlabel e ylabel. Avvicinare i grafici rimuovendo le etichette delle tacche dell'asse x dal grafico superiore e impostando la proprietà TileSpacing di t su '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.

Vedi anche

Funzioni

Argomenti complementari