Main Content

subplot

Creare il posizionamento degli assi a piastrella

Descrizione

esempio

Nota

tiledlayout è consigliato rispetto a subplot in quanto consente di creare layout con spaziature regolabili tra le piastrelle, piastrelle che rifluiscono in base alle dimensioni della figura nonché di posizionare le barre di colore e le legende in modo migliore. (da R2019b)

subplot(m,n,p) divide la figura corrente in una griglia m x n e crea gli assi nella posizione specificata da p. MATLAB® numera le posizioni del sub-plottaggio per riga. Il primo sub-plottaggio è la prima colonna della prima riga, il secondo sub-plottaggio è la seconda colonna della prima riga e così via. Se gli assi sono presenti nella posizione specificata, questo comando rende tali assi gli assi correnti.

esempio

subplot(m,n,p,'replace') cancella gli assi esistenti nella posizione p e crea nuovi assi.

subplot(m,n,p,'align') crea nuovi assi in modo che le caselle del grafico siano allineate. Questa opzione è il comportamento predefinito.

esempio

subplot(m,n,p,ax) converte gli assi esistenti ax, in un sub-plottaggio all’interno della stessa figura.

esempio

subplot('Position',pos) crea gli assi nella posizione personalizzata specificata da pos. Utilizzare questa opzione per posizionare un sub-plottaggio non allineato alle posizioni della griglia. Specificare pos come un vettore a quattro elementi di forma [left bottom width height]. Se i nuovi assi si sovrappongono a quelli esistenti, i nuovi assi li sostituiscono.

subplot(___,Name,Value) modifica le proprietà degli assi utilizzando una o più coppie dell’argomento nome-valore. Impostare le proprietà degli assi dopo tutti gli altri argomenti di input.

esempio

ax = subplot(___) crea un oggetto Axes, un oggetto PolarAxes o un oggetto GeographicAxes. Utilizzare ax per apportare modifiche future agli assi.

esempio

subplot(ax) rende gli assi specificati da ax gli assi correnti per la figura padre. Questa opzione non rende la figura padre la figura corrente, qualora non lo sia già.

Esempi

comprimi tutto

Creare una figura con due sub-plottaggi impilati. Tracciare un'onda sinusoidale in ciascuno di essi.

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.

Creare una figura divisa in quattro sub-plottaggi. Tracciare un'onda sinusoidale in ciascuno di essi e assegnare un titolo a ogni sub-plottaggio.

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.

Creare una figura contenente tre sub-plottaggi. Creare due sub-plottaggi attraverso la metà superiore della figura e un terzo sub-plottaggio che si estenda nella metà inferiore della figura. Aggiungere i titoli a ciascun sub-plottaggio.

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.

Creare una figura con quattro grafici a stelo di dati casuali. Quindi sostituire il secondo sub-plottaggio con assi vuoti.

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.

Creare una figura con due sub-plottaggi non allineati alle posizioni della griglia. Specificare una posizione personalizzata per ciascun sub-plottaggio.

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.

Creare una figura con due assi polari. Creare un grafico a linee polari nel sub-plottaggio superiore e un grafico a dispersione polare nel sub-plottaggio inferiore.

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.

Creare una figura con due sub-plottaggi. Attribuire gli oggetti Axes alle variabili ax1 e ax2. Specificare gli oggetti Axes come input delle funzioni di plottaggio per garantire che le funzioni vengano tracciate in un sub-plottaggio specifico.

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.

Modificare gli assi impostando le proprietà degli oggetti Axes. Modificare la dimensione del carattere per il sub-plottaggio superiore e la larghezza della linea per il sub-plottaggio inferiore. Alcune funzioni di plottaggio impostano le proprietà degli assi. Eseguire le funzioni di plottaggio prima di specificare le proprietà degli assi onde evitare di sovrascrivere le impostazioni delle proprietà degli assi esistenti. Utilizzare la notazione a punti per impostare le proprietà.

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.

Creare una figura con più sub-plottaggi. Memorizzare gli oggetti Axes in vettore ax. Quindi, rendere il secondo sub-plottaggio gli assi correnti. Creare un grafico a linee e modificare i limiti dell’asse del secondo sub-plottaggio. Per impostazione predefinita, le funzioni grafiche puntano agli assi correnti.

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.

Creare un grafico a linee. Quindi, convertire gli assi in modo che il grafico diventi il sub-plottaggio inferiore della figura. La funzione di sub-plottaggio utilizza la figura in cui erano presenti gli assi originali.

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.

Combinare assi esistenti in figure separate in un'unica figura con sub-plottaggi.

Creare due grafici in due figure diverse. Attribuire gli oggetti Axes alle variabili ax1 e ax2. Attribuire l’oggetto Legend alla variabile 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"

Creare copie dei due oggetti Axes utilizzando copyobj. Specificare i genitori degli assi copiati come nuova figura. Poiché le legende e le barre di colore non vengono copiate con gli assi associati, copiare la legenda con gli assi.

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

Argomenti di input

comprimi tutto

Numero di righe della griglia, specificato come intero positivo.

Tipi di dati: single | double

Numero di colonne della griglia, specificato come intero positivo.

Tipi di dati: single | double

Posizione della griglia per in nuovi assi, specificata come scalare o vettore di numeri interi positivi.

  • Se p è un intero scalare positivo, subplot crea un sub-plottaggio nella posizione della griglia p.

  • Se p è un vettore di numeri interi positivi, subplot crea un sub-plottaggio che si estende sulle posizioni della griglia elencate in p.

Esempio subplot(2,3,1) crea un sub-plottaggio nella posizione 1.

Esempio subplot(2,3,[2,5]) crea un sub-plottaggio che si estende dalla posizione 2 alla 5.

Esempio subplot(2,3,[2,6]) crea un sub-plottaggio che si estende sulle posizioni 2, 3, 5 e 6.

Tipi di dati: single | double

Posizione personalizzata per i nuovi assi, specificata come vettore a quattro elementi di forma [left bottom width height].

  • Gli elementi left e bottom specificano la posizione dell'angolo inferiore sinistro del sub-plottaggio rispetto all'angolo inferiore sinistro della figura.

  • Gli elementi width e height specificano le dimensioni del sub-plottaggio.

Specificare i valori compresi tra 0 e 1 normalizzati rispetto alla parte interna della figura.

Nota

Quando si utilizza uno script per creare sub-plottaggi, MATLAB non finalizza il valore della proprietà Position fino a quando non viene emesso un comando drawnow o MATLAB non torna in attesa di un comando impartito dall’utente. Il valore della proprietà Position per un sub-plottaggio è soggetto a modifiche finché lo script non aggiorna il grafico o non esce.

Esempio subplot('Position',[0.1 0.1 0.45 0.45])

Tipi di dati: single | double

Assi correnti da rendere attuali o da convertire in un sub-plottaggio, specificati come oggetto Axes, oggetto PolarAxes, oggetto GeographicAxes o oggetto dei grafici con una proprietà PositionConstraint, come un oggetto HeatmapChart.

Per creare assi polari o geografici vuoti in una posizione in un sub-plottaggio, specificare ax come funzione polaraxes o geoaxes. Ad esempio, subplot(2,1,2,polaraxes).

Argomenti nome-valore

Specificare coppie opzionali di argomenti come Name1=Value1,...,NameN=ValueN, dove Name è il nome dell’argomento e Value è il valore corrispondente. Gli argomenti nome-valore devono comparire dopo gli altri argomenti, mentre l'ordine delle coppie non è rilevante.

Per le release antecedenti alla R2021a, utilizzare le virgole per separare ciascun nome e valore e includere Name tra virgolette.

Esempio subplot(m,n,p,'XGrid','on')

Alcune funzioni di plottaggio sovrascrivono le impostazioni delle proprietà. Considerare le impostazioni delle proprietà degli assi dopo il plottaggio. Le proprietà che si possono impostare dipendono dal tipo di assi:

Suggerimenti

  • Per cancellare i contenuti della figura, utilizzare clf. Ad esempio, si potrebbe cancellare il layout del sub-plottaggio esistente dalla figura prima di crearne uno nuovo.

  • Per sovrapporre gli assi, utilizzare invece il comando axes. La funzione subplot cancella gli assi esistenti che si sovrappongono ai nuovi assi. Ad esempio, subplot('Position',[.35 .35 .3 .3]) cancella qualsiasi asse sottostante, ma axes('Position',[.35 .35 .3 .3]) posiziona i nuovi assi al centro della figura senza cancellare quelli sottostanti.

  • subplot(111) è un'eccezione e non è identico a subplot(1,1,1) nel comportamento. Per motivi di compatibilità con le versioni precedenti, subplot(111) è un caso speciale di sub-plottaggio che non crea immediatamente gli assi ma imposta la figura in modo che il comando grafico successivo esegua clf reset. Il comando grafico successivo cancella tutte le figure figlie e crea nuovi assi nella posizione predefinita. subplot(111) non restituisce un oggetto Axes e si verifica un errore se il codice specifica un argomento di ritorno.

Funzionalità alternative

Utilizzare le funzioni tiledlayout e nexttile per creare una piastrellatura configurabile dei grafici. Le opzioni di configurazione comprendono:

  • Controllo della spaziatura tra i grafici e intorno ai bordi del layout

  • Un'opzione per un titolo condiviso nella parte superiore del layout

  • Opzioni per etichette condivise degli assi x e y

  • Un'opzione per controllare se la piastrellatura ha una dimensione fissa o una dimensione variabile che può rifluire

Per maggiori informazioni, vedere Combine Multiple Plots.

Cronologia versioni

Introduzione prima di R2006a