MATLAB Answers

2 legends in 1 plot

290 views (last 30 days)
Steineklopfer on 15 Nov 2017
Commented: Steineklopfer on 15 Nov 2017
I though about adding 2 legends to my plots. One to display the entries that all plots share, and one that displays the entries that are unique for each plot.
I found a solution with copyobj, ( ) however that only seems to work with Matlab versions older than 2014b or so.
Is there a solution for newer versions as well?


mounika on 15 Nov 2017
I am using R2017b, following worked perfectly fine for me:
%# create some plot with a legend
hAx(1) = axes();
hLine(1) = plot(1:10, 'Parent',hAx(1));
set(hAx(1), 'Box','off')
legend(hLine(1), 'line')
%# copy the axis
hAx(2) = copyobj(hAx(1),gcf);
delete( get(hAx(2),'Children') ) %# delete its children
hLine(2) = plot(sin(1:10), 'Color','r', 'Parent',hAx(2));
set(hAx(2), 'Color','none', 'XTick',[], ...
'YAxisLocation','right', 'Box','off') %# make it transparent
legend(hLine(2), {'curve'}, 'Location','NorthWest', 'Color','w')
Steineklopfer on 15 Nov 2017
Hmm... Yeap you are right. It works for me too. Don't know why it didn't work when I found it.
Thanks :D

Sign in to comment.

Answers (1)

Oindri on 15 Nov 2017
The code works fine on R2016a too. the legends appear on either top corners of the plot, since one is specifically mentioned 'northwest'


Sign in to comment.

Translated by