# How to create an overall legend for subplots with the SUBAXIS function?

3 views (last 30 days)
Sim on 22 Apr 2022
Commented: Sim on 22 Apr 2022
Hi, how can I create an overall legend by using the subaxis function?
The following example does not work:
x = -10:10;
season = {'summer','winter'};
colors = {'blue','red','black','magenta'};
for i = 1 : 4
subaxis(2,2,i);
y1 = (rand(1,21)-0.5)*20;
y2 = (rand(1,21)-0.5)*10;
hold on
p1(i) = plot(x, y1, 'Color', colors{i}, 'LineStyle','--');
p2(i) = plot(x, y2, 'Color', colors{i}, 'LineStyle','-');
hold off
p1(i).DisplayName = [city{i} ', ' season{1}];
p2(i).DisplayName = [city{i} ', ' season{2}];
end
lgd = legend;
lgd.Position = 'northeastoutside';

Matt J on 22 Apr 2022
Edited: Matt J on 22 Apr 2022
x = -10:10;
season = {'summer','winter'};
colors = {'blue','red','black','magenta'};
for i = 1 : 4
ax(i)=subaxis(2,2,i);
y1 = (rand(1,21)-0.5)*20;
y2 = (rand(1,21)-0.5)*10;
hold on
p1(i) = plot(x, y1, 'Color', colors{i}, 'LineStyle','--');
p2(i) = plot(x, y2, 'Color', colors{i}, 'LineStyle','-');
hold off
p1(i).DisplayName = [city{i} ', ' season{1}];
p2(i).DisplayName = [city{i} ', ' season{2}];
end
for i=1:4
ax(i).Position([1,3])=ax(i).Position([1,3])*0.8; %make room for legend
end
lgd = legend;
lgd.Position(1:2)=[0.75,0.4];
Sim on 22 Apr 2022
Oh, solved..!!
Your solution works well, I just had an annotation, and the "EdgeColor" of the annotation was still "black" (the default color)....
I solved it just by setting "EdgeColor" as "none", as shown here:
annotation('textbox','String',str,...
'Position',ax(i).Position,...
'EdgeColor','none');