Matlab 2014b: Copying just the legend from existing figure into subplot

Hi there,
I'm looking for how to get the legend from an existing saved figure and load it as the legend in a figure of subplots.
In 2013 I used to be able to do:
h1 = hgload('file.fig');
leg_ax = findobj(h1,'type','axes','Tag','legend','-not','Tag','Colorbar');
s6 = subplot(2,3,3);
copyobj(leg_ax,get(s6,'Parent'));
Thanks, Ashley

 Risposta accettata

Matt J
Matt J il 19 Nov 2014
Modificato: Matt J il 19 Nov 2014
One way is to save and reuse just the legend object itself, e.g.,
plot(1:5,2:6,1:5,0:4);
hleg=legend('First Line', 'Second Line');
save tst hleg
clear hleg
load tst hleg
figure;
s6 = subplot(2,3,3);
plot(10:10:50,(2:6).^2,10:10:50,(0:4).^2);
legend(hleg.String{:})

3 Commenti

The plot and legend were created and saved as a .fig file. How would I do this using the h1 = hgload figure object that I load from a file?
h1=hgload(...)
hleg=findobj(h1,'Type','Legend');
s6 = subplot(2,3,3);
legend(hleg.String{:});
Excellent, that worked! Thanks for your help, Matt.

Accedi per commentare.

Più risposte (1)

h1 = hgload('file.fig');
leg_ax = findobj(h1,'type','axes','Tag','legend','-not','Tag','Colorbar');
figure
s6 = subplot(2,3,3);
copyobj(leg_ax,get(s6,'Parent'));

2 Commenti

In 2013 the "leg_ax" line no longer works since a legend isn't an axes any longer.
The handles can not be used if the object is deleted

Accedi per commentare.

Richiesto:

il 19 Nov 2014

Modificato:

il 19 Nov 2014

Community Treasure Hunt

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

Start Hunting!

Translated by