2 legends in 1 plot

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, ( https://stackoverflow.com/questions/11253887/how-do-i-add-two-legends-to-a-single-plot-in-matlab ) however that only seems to work with Matlab versions older than 2014b or so.
Is there a solution for newer versions as well?

2 comentarios

mounika
mounika el 15 de Nov. de 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
Steineklopfer el 15 de Nov. de 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

Iniciar sesión para comentar.

Respuestas (1)

Oindri
Oindri el 15 de Nov. de 2017

0 votos

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

1 comentario

Lee Key
Lee Key el 7 de Mzo. de 2021
Editada: Lee Key el 7 de Mzo. de 2021
I have same issue. I want to plot two different graphs (Yleft and Y right) on the same time series axis. When I run the code, the seond legend does not appear, only the first one. Any further help?
I used the location (northwest, and northeast, together with 'hold on'. Still I failed to have both legends on the plot.

Iniciar sesión para comentar.

Preguntada:

el 15 de Nov. de 2017

Editada:

el 7 de Mzo. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by