Azzera filtri
Azzera filtri

How to create an overall legend that includes all appeared data groups?

23 visualizzazioni (ultimi 30 giorni)
I'm trying to make a plot, using the tiledlayout function to create 4 subplots, while in the first subplot, there are 5 data groups, while the remaining subplots only have four of those 5 groups. If I create an overall legend, it will only show 4 groups that appeared in all the subplots, and automatically omit the extra one that's only shown in the first subplot, how to include that grounp into the overall legend as well? Thanks!

Risposta accettata

Avni Agrawal
Avni Agrawal il 1 Ago 2024 alle 11:47
I understand that you are trying too create an overall legend in MATLAB that includes all data groups from multiple subplots, you can manually specify the legend entries by using the legend function with the appropriate handles.
Here is an example using the tiledlayout function:
% Create a tiled layout
t = tiledlayout(2, 2);
% Generate some example data
x = linspace(0, 10, 100);
y1 = sin(x);
y2 = cos(x);
y3 = tan(x);
y4 = sin(x) .* cos(x);
y5 = sin(x) .^ 2;
% First subplot with 5 data groups
nexttile;
h1 = plot(x, y1, 'r'); hold on;
h2 = plot(x, y2, 'g');
h3 = plot(x, y3, 'b');
h4 = plot(x, y4, 'k');
h5 = plot(x, y5, 'm');
title('Subplot 1');
hold off;
% Second subplot with 4 data groups
nexttile;
plot(x, y1, 'r'); hold on;
plot(x, y2, 'g');
plot(x, y3, 'b');
plot(x, y4, 'k');
title('Subplot 2');
hold off;
% Third subplot with 4 data groups
nexttile;
plot(x, y1, 'r'); hold on;
plot(x, y2, 'g');
plot(x, y3, 'b');
plot(x, y4, 'k');
title('Subplot 3');
hold off;
% Fourth subplot with 4 data groups
nexttile;
plot(x, y1, 'r'); hold on;
plot(x, y2, 'g');
plot(x, y3, 'b');
plot(x, y4, 'k');
title('Subplot 4');
hold off;
% Create an overall legend
lgd = legend([h1, h2, h3, h4, h5], {'Group 1', 'Group 2', 'Group 3', 'Group 4', 'Group 5'});
lgd.Layout.Tile = 'north'; % Place the legend at the top of the tiled layout
% Set the renderer to 'painters' or 'opengl'
set(gcf, 'Renderer', 'painters'); % You can also try 'opengl'
I hope this helps!

Più risposte (0)

Prodotti


Release

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by