How to set position of the legend outside the axes?

Hi all,
I create sample code for set legend position.
f = figure;
p = uipanel('Title','Panel','FontSize',12,...
'BackgroundColor','white',...
'Position',[.1 .1 .67 .8]);
% Construct a figure with subplots and data
subplot(2,1,1, 'Parent', p);
line1 = histogram(rand(1,1000));
title('Axes 1');
subplot(2,1,2, 'Parent', p);
line2 = histogram(rand(1,1000));
title('Axes 2');
% Construct a Legend with the data from the sub-plots
hL = legend([line1,line2],{'Data Axes 1','Data Axes 2'});
%set(hL,'location', 'bestoutside');
Here is result:
But, I want to move legend to outside of axes such as:
Do anyone know? Please help me.
Thank you so much

Risposte (1)

add a Name-Value pair to your legend command, e.g.
legend('Location','eastoutside')

6 Commenti

Thank you for your anwser.
But, when use ['Location','eastoutside'], legend is outside of plot, but it does not outside of axes.
use a tiledlayout instead of subplot, then the two axes are aligned and have same width
tiledlayout(2,1); nexttile; plot(rand(3)); legend('Location','eastoutside'); nexttile; plot(rand(5))
I checked. legend still inside axes.
How you know to move legend to outside axes ?. Example for outside panel .
look again at my previois comment, there you can see that the kegend is not inside the axis area. what did you expect?
sorry, I think in your code, legend only outside of plot area.
I changed some lines. So can you move legend same following figure.
Thank you so much
f = figure;
p = uipanel(f, 'Position',[.1 .1 .8 .8], 'Title','Panel 1');
p1 = uipanel('Parent', p, 'Position',[.1 .1 .6 .6], 'Title','Panel 2');
t = tiledlayout(p1,1,1);
nexttile(t);
plot(rand(3));
h = legend('Location','northeastoutside');

Accedi per commentare.

Prodotti

Release

R2019b

Richiesto:

il 16 Set 2022

Modificato:

il 26 Set 2023

Community Treasure Hunt

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

Start Hunting!

Translated by