Main Content

subplot

Erstellen von Achsen in kachelartiger Anordnung

Beschreibung

Beispiel

Hinweis

tiledlayout ist subplot vorzuziehen, weil Sie damit Layouts mit anpassbaren Kachelabständen, mit Kacheln, die abhängig von der Größe der Abbildung neu angeordnet werden, und mit besser platzierten Farbleisten und Legenden erstellen können. (seit R2019b)

subplot(m,n,p) unterteilt die aktuelle Abbildung in ein mxn-Raster und erstellt Achsen an den von p angegebenen Positionen. MATLAB® nummeriert die Positionen im Unterdiagramm nach Zeilen. Das erste Unterdiagramm entspricht der ersten Spalte der ersten Zeile, das zweite Unterdiagramm entspricht der zweiten Spalte der ersten Zeile usw. Wenn Achsen an den angegebenen Positionen vorhanden sind, legt dieser Befehl die Achsen als aktuelle Achsen fest.

Beispiel

subplot(m,n,p,'replace') löscht vorhandene Achsen an der Position p und erstellt neue Achsen.

subplot(m,n,p,'align') erstellt neue Achsen so, dass die Diagrammboxen ausgerichtet sind. Diese Option entspricht dem Standardverhalten.

Beispiel

subplot(m,n,p,ax) konvertiert die vorhandenen Achsen, ax, in ein Unterdiagramm, das sich in derselben Abbildung befindet.

Beispiel

subplot('Position',pos) erstellt Achsen an der benutzerdefinierten Position, die von pos festgelegt wird. Verwenden Sie diese Option, um ein Unterdiagramm zu positionieren, das nicht an den Rasterpositionen ausgerichtet wird. Geben Sie pos als Vektor mit vier Elementen an, der die Form [left bottom width height] aufweist. Wenn die neuen Achsen vorhandene Achsen überlappen, ersetzen die neuen Achsen die vorhandenen Achsen.

subplot(___,Name,Value) ändert Achseneigenschaften mithilfe eines oder mehrerer Name-Wert-Paar-Argumente. Legen Sie Achseneigenschaften nach allen anderen Eingabeargumenten fest.

Beispiel

ax = subplot(___) erstellt ein Axes-Objekt, PolarAxes-Objekt oder GeographicAxes-Objekt. Verwenden Sie ax, um spätere Änderungen an den Achsen vorzunehmen.

Beispiel

subplot(ax) legt die Achsen, die von ax angegeben werden, als aktuelle Achsen der übergeordneten Abbildung fest. Diese Option legt die übergeordnete Abbildung nicht als aktuelle Abbildung fest, wenn diese nicht bereits die aktuelle Abbildung ist.

Beispiele

alle reduzieren

Erstellen Sie eine Abbildung mit zwei gestapelten Unterdiagrammen. Plotten Sie in jedem dieser Unterdiagramme eine Sinuswelle.

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.

Erstellen Sie eine Abbildung, die in vier Unterdiagramme unterteilt ist. Plotten Sie in jedem dieser Unterdiagramme eine Sinuswelle und geben Sie einen Titel für jedes Unterdiagramm ein.

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.

Erstellen Sie eine Abbildung mit drei Unterdiagrammen. Erstellen Sie zwei Unterdiagramme über die obere Hälfte der Abbildung und ein drittes Unterdiagramm über die untere Hälfte der Abbildung. Fügen Sie jedem Unterdiagramm Titel hinzu.

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.

Erstellen Sie eine Abbildung mit vier Stammdiagrammen aus Zufallsdaten. Ersetzen Sie anschließend das zweite Unterdiagramm durch leere Achsen.

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.

Erstellen Sie eine Abbildung mit zwei Unterdiagrammen, die nicht an den Rasterpositionen ausgerichtet sind. Geben Sie eine benutzerdefinierte Position für jedes Unterdiagramm an.

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.

Erstellen Sie eine Abbildung mit zwei Polarachsen. Erstellen Sie ein Polarliniendiagramm im oberen Unterdiagramm und ein Polarstreudiagramm im unteren Unterdiagramm.

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.

Erstellen Sie eine Abbildung mit zwei Unterdiagrammen. Weisen Sie die Axes-Objekte den Variablen ax1 und ax2 zu. Geben Sie die Axes-Objekte als Eingaben für die Plottingfunktionen an, um sicherzustellen, dass die Funktionen in einem bestimmten Unterdiagramm geplottet werden.

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.

Ändern Sie die Achsen durch Festlegen der Eigenschaften von Axes-Objekten. Ändern Sie die Schriftgröße für das obere Unterdiagramm und die Linienbreite für das untere Unterdiagramm. Einige Plottingfunktionen legen Achseneigenschaften fest. Führen Sie Plottingfunktionen aus, bevor Sie Achseneigenschaften angeben, um das Überschreiben der Eigenschafteneinstellungen für vorhandene Achsen zu vermeiden. Verwenden Sie die Punktnotation, um Eigenschaften festzulegen.

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.

Erstellen Sie eine Abbildung mit mehreren Unterdiagrammen. Speichern Sie die Axes-Objekte im Vektor ax. Legen Sie anschließend das zweite Unterdiagramm als aktuelle Achsen fest. Erstellen Sie ein Liniendiagramm und ändern Sie die Achsengrenzwerte für das zweite Unterdiagramm. Standardmäßig zielen die Grafikfunktionen auf die aktuellen Achsen ab.

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.

Erstellen Sie ein Liniendiagramm. Anschließend konvertieren Sie die Achsen so, dass sie das untere Unterdiagramm der Abbildung sind. Die Unterdiagramm-Funktion verwendet die Abbildung, in der die ursprünglichen Achsen vorhanden waren.

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.

Kombinieren Sie Achsen, die in separaten Abbildungen vorhanden sind, zu einer einzelnen Abbildung mit Unterdiagrammen.

Erstellen Sie zwei Diagramme in zwei unterschiedlichen Abbildungen. Weisen Sie die Axes-Objekte den Variablen ax1 und ax2 zu. Weisen Sie das Legend-Objekt der Variablen lgd zu.

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"

Erstellen Sie mithilfe von copyobj Kopien der beiden Axes-Objekte. Geben Sie die übergeordneten Elemente der kopierten Achsen als neue Abbildung an. Da die Legenden und Farbleisten nicht mit den zugeordneten Achsen kopiert werden, kopieren Sie die Legende mit den Achsen.

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

Eingabeargumente

alle reduzieren

Anzahl der Rasterzeilen, angegeben als positive Ganzzahl.

Datentypen: single | double

Anzahl der Rasterspalten, angegeben als positive Ganzzahl.

Datentypen: single | double

Rasterposition für die neuen Achsen, angegeben als Skalar oder Vektor positiver Ganzzahlen.

  • Wenn p eine skalare positive Ganzzahl ist, erstellt subplot ein Unterdiagramm an der Rasterposition p.

  • Wenn p ein Vektor positiver Ganzzahlen ist, erstellt subplot ein Unterdiagramm über die Rasterpositionen, die in p aufgelistet sind.

Beispiel: subplot(2,3,1) erstellt ein Unterdiagramm an Position 1.

Beispiel: subplot(2,3,[2,5]) erstellt ein Unterdiagramm über die Positionen 2 und 5.

Beispiel: subplot(2,3,[2,6]) erstellt ein Unterdiagramm über die Positionen 2, 3, 5 und 6.

Datentypen: single | double

Benutzerdefinierte Position für die neuen Achsen, angegeben als Vektor aus vier Elementen der Form [left bottom width height].

  • Die Elemente left und bottom geben die Position der linken unteren Ecke des Unterdiagramms relativ zur unteren linken Ecke der Abbildung an.

  • Die Elemente width und height geben die Dimensionen des Unterdiagramms an.

Geben Sie die Werte zwischen 0 und 1 an, die bezogen auf das Innere der Abbildung normalisiert wurden.

Hinweis

Wenn Sie ein Skript zum Erstellen von Unterdiagrammen verwenden, finalisiert MATLAB den Wert der Eigenschaft Position erst, wenn ein drawnow-Befehl ausgegeben wird oder MATLAB wieder auf einen Benutzerbefehl wartet. Der Wert der Eigenschaft Position für ein Unterdiagramm ändert sich, bis das Skript entweder das Diagramm aktualisiert oder beendet wird.

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

Datentypen: single | double

Vorhandene Achsen, die als aktuell festgelegt oder in ein Unterdiagramm konvertiert werden sollen, angegeben als Axes-Objekt, PolarAxes-Objekt, GeographicAxes-Objekt oder grafisches Objekt mit einer PositionConstraint-Eigenschaft, z. B. als HeatmapChart-Objekt.

Zum Erstellen leerer Polar- oder geografischer Achsen an einer Position im Unterdiagramm geben Sie ax als polaraxes- oder geoaxes-Funktion an. Beispiel: subplot(2,1,2,polaraxes).

Name-Wert-Argumente

Geben Sie optionale Argumentpaare als Name1=Value1,...,NameN=ValueN an, wobei Name der Name des Arguments und Value der entsprechende Wert ist. Name-Wert-Argumente müssen nach anderen Argumenten angezeigt werden. Die Reihenfolge der Paare spielt jedoch keine Rolle.

In Releases vor R2021a verwenden Sie Kommas, um die einzelnen Namen und Werte zu trennen, und schließen Sie Name in Anführungszeichen ein.

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

Einige Plottingfunktionen überschreiben Eigenschafteneinstellungen. Ziehen Sie in Betracht, die Achseneigenschaften nach dem Plotten festzulegen. Welche Eigenschaften Sie festlegen können, hängt vom Typ der Achsen ab:

Tipps

  • Zum Löschen der Inhalte der Abbildung verwenden Sie clf. Beispielsweise könnten Sie das vorhandene Unterdiagramm-Layout aus der Abbildung löschen, bevor Sie ein neues Unterdiagramm-Layout erstellen.

  • Verwenden Sie zur Überlagerung von Achsen stattdessen die Funktion axes. Die Funktion subplot löscht vorhandene Achsen, die neue Achsen überlappen. Beispielsweise werden mit subplot('Position',[.35 .35 .3 .3]) alle zugrunde liegenden Achsen gelöscht, während mit axes('Position',[.35 .35 .3 .3]) neue Achsen in der Mitte der Abbildung positioniert werden, ohne die zugrunde liegenden Achsen zu löschen.

  • subplot(111) ist eine Ausnahme und weist ein ganz anderes Verhalten auf als subplot(1,1,1). Um die Abwärtskompatibilität beizubehalten, ist subplot(111) ein Sonderfall eines Unterdiagramms. Mit dieser Funktion werden Achsen nicht sofort erstellt. Stattdessen wird die Abbildung so eingerichtet, dass der nächste Grafikbefehl clf reset ausführt. Der nächste Grafikbefehl löscht alle untergeordneten Elemente der Abbildung und erstellt neue Achsen an der Standardposition. subplot(111) gibt kein Axes-Objekt zurück und es wird ein Fehler angezeigt, wenn der Code ein Rückgabeargument angibt.

Alternative Funktionen

Erstellen Sie mithilfe der Funktionen tiledlayout und nexttile eine konfigurierbare Kachelung von Diagrammen. Die Konfigurationsoptionen umfassen Folgendes:

  • Kontrolle über die Abstände zwischen den Diagrammen und um die Kanten des Layouts

  • Eine Option für einen gemeinsam verwendeten Titel am oberen Rand des Layouts

  • Optionen für gemeinsam verwendete x- und y-Achsenbeschriftungen

  • Eine Option, mit der festgelegt werden kann, ob die Größe der Kachelung fest ist oder ob sie variabel ist und die Kacheln neu angeordnet werden können

Weitere Informationen finden Sie unter Combine Multiple Plots.

Versionsverlauf

Eingeführt vor R2006a