How to have a common legend for subplots?
Asked Answered
J

1

11

I am trying to create a figure of subplots. I don't want the subplots to have legends but instead the figure to have an overall legend.

I read that it is possible either by adding a legend only to the last subplot and adjusting its location in the figure through the position feature of legend or by using one subplot figure position (e.g. subplot(2,3,5.5) only for displaying the legend). I would prefer the second option although I haven't succeeded up until now. Any help?

Here is my code:

SLS=figure();
hold on
subplot(3,2,1);
plot(t,u{1},t,u{2},t,u{3},t,u{4},t,u{5},t,u{6});
title('SLS Levels');
subplot(3,2,2);
plot(t,log_u{1},t,log_u{2},t,log_u{3},t,log_u{4},t,log_u{5},t,log_u{6});
title('SLS Logarithms');
subplot(3,2,3);
plot(t,I_u{1},t,I_u{2},t,I_u{3},t,I_u{4},t,I_u{5},t,I_u{6});
title('SLS Levels with Intercept');
subplot(3,2,4);
plot(t,log_I_u{1},t,log_I_u{2},t,log_I_u{3},t,log_I_u{4},t,log_I_u{5},t,log_I_u{6});
title('SLS Log. with Intercept');
subplot(3,2,5.5);
legend('GDP', 'C', 'I', 'G', 'Imp.', 'Exp.');
axis off
Jackal answered 3/1, 2017 at 23:53 Comment(0)
I
33

Code:

% Plotting some random data and storing their handles
subplot(3,2,1);       h1 = plot(randperm(10),randperm(10),'ko-');
subplot(3,2,2);       h2 = plot(randperm(10),randperm(10),'g+-');
subplot(3,2,3);       h3 = plot(randperm(10),randperm(10),'md-');
subplot(3,2,4);       h4 = plot(randperm(10),randperm(10),'rv-.');

hL = subplot(3,2,5.5);
poshL = get(hL,'position');     % Getting its position

lgd = legend(hL,[h1;h2;h3;h4],'RandomPlot1','RandomPlot2','RandomPlot3','RandomPlot4');
set(lgd,'position',poshL);      % Adjusting legend's position
axis(hL,'off');                 % Turning its axis off

Output:

enter image description here

Ineffaceable answered 4/1, 2017 at 5:13 Comment(2)
My take-away from this is that you can have 0.5 increments in subplots, didn't know that! Neat solution.Mayman
I'd add that the first argument of subplot() must be an integer, but the others evidently don't have to be!Firetrap

© 2022 - 2024 — McMap. All rights reserved.