Main Content

Kombinieren mehrerer Diagramme

Seit R2019b. Ersetzt Combine Multiple Plots (R2019a).

Dieses Beispiel veranschaulicht, wie Sie verschiedene Diagramme mit der Funktion hold auf denselben Achsen kombinieren und auf einer Abbildung mit der Funktion tiledlayout mehrere Achsen erstellen können.

Kombinieren von Diagrammen auf denselben Achsen

Standardmäßig löschen neue Diagramme bestehende Diagramme und setzen Achseneigenschaften (z. B. den Titel) zurück. Sie können jedoch über den Befehl hold on mehrere Diagramme auf denselben Achsen kombinieren. Erstellen Sie beispielsweise zwei Liniendiagramme und ein Streudiagramm. Setzen Sie daraufhin den Haltestatus auf aus.

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.

Ist der Haltestatus aktiviert, löschen neue Diagramme nicht bestehende Diagramme und setzen keine Achseneigenschaften (z. B. Titel oder Achsenbeschriftungen) zurück. Die Diagramme wechseln gemäß den Eigenschaften ColorOrder und LineStyleOrder der Achsen durch die Farben und Linienstile. Die Achsengrenzwerte und Teilstrichwerte passen sich ggf. an die neuen Daten an.

Anzeigen mehrerer Achsen auf einer Abbildung

Mithilfe der Funktion tiledlayout können Sie mehrere Achsen auf einer einzigen Abbildung darstellen. Diese Funktion erstellt ein gekacheltes Diagramm-Layout mit einem unsichtbaren Raster über der gesamten Abbildung. Jede Kachel kann Achsen zur Anzeige eines Diagramms enthalten. Rufen Sie nach der Erstellung eines Layouts die nexttile-Funktion auf, um ein Achsenobjekt im Layout zu platzieren. Rufen Sie daraufhin eine Diagrammfunktion auf, um ein Diagramm entlang der Achsen zu erstellen. Erstellen Sie beispielsweise zwei Diagramme in einem 2x1-Layout. Fügen Sie jedem Diagramm einen Titel hinzu.

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.

Erstellen eines Diagramms über mehrere Zeilen oder Spalten

Um ein Diagramm über mehrere Zeilen oder Spalten hinweg zu erstellen, geben Sie beim Aufrufen von nexttile das Argument span an. Erstellen Sie beispielsweise ein 2x2-Layout. Erstellen Sie Diagramme in den ersten zwei Kacheln. Erstellen Sie daraufhin ein Diagramm über eine Zeile und zwei Spalten hinweg.

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.

Ändern der Achsendarstellung

Sie können die Achsendarstellung ändern, indem Sie die Eigenschaften der Achsenobjekte ändern. Sie können die Funktion nexttile mit dem Ausgabeargument aufrufen, um das Achsenobjekt zu erhalten. Sie können das Achsenobjekt zudem als erstes Eingabeargument für eine Grafikfunktion angeben, um sicherzustellen, dass die Funktion die korrekten Achsen anzielt.

Sie können beispielsweise zwei Diagramme erstellen und die Achsenobjekte den Variablen ax1 und ax2 zuweisen. Ändern Sie die Schriftgröße der Achsen und die Farbe der x-Achse des ersten Diagramms. Fügen Sie dem zweiten Diagramm Rasterlinien hinzu.

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.

Regeln der Kachelabstände

Sie können die Abstände der Kacheln in einem Layout über die Eigenschaften Padding und TileSpacing regeln. Erstellen Sie zum Beispiel vier Diagramme in einem 2x2-Layout.

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.

Setzen Sie die Eigenschaften Padding und TileSpacing auf 'compact', um die Abstände um das Layout und jede Kachel zu reduzieren.

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.

Anzeigen gemeinsamer Titel und Achsenbeschriftungen

Sie können in einem Layout gemeinsame Titel und gemeinsame Achsenbeschriftungen anzeigen. Erstellen Sie ein 2x1-Layout t. Zeigen Sie daraufhin ein Liniendiagramm und ein Stamm-Blatt-Diagramm an. Rufen Sie die Funktion linkaxes auf, um die Grenzwerte der x-Achse zu synchronisieren.

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.

Übergeben Sie t den Funktionen title, xlabel und ylabel, um einen gemeinsamen Titel und gemeinsame Achsenbeschriftungen hinzuzufügen. Bringen Sie die Diagramme näher zusammen, indem Sie die Teilstrich-Beschriftungen der x-Achse vom oberen Diagramm entfernen und die Eigenschaft TileSpacing von t auf 'compact' setzen.

% 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.

Siehe auch

Funktionen

Verwandte Themen