Adding a legend from a loop into one element
Show older comments
Hi, I created a loop (p4) and would like to find a way to combine them into one element so that when I click on p4 in the legend this element disappears (visibility off). See below for the code.
for k=1:size(A,1)
p4 = plot3([A(k,1),B(k,1)],[A(k,2),B(k,2)],[A(k,3),B(k,3)],'b');
end
...
L = legend([p1 p2 p3 p4 S p5 p7 p9],{'p1','p2','p3','p4','S','p5','p7','p9'},'location','Best');
L.ItemHitFcn = @hitcallback_ex1;
function hitcallback_ex1(src,evnt)
if strcmp(evnt.Peer.Visible,'on') evnt.Peer.Visible = 'off'; else evnt.Peer.Visible = 'on'; end
end
end
At the moment, nothing happens when I click on p4. Thank you in advance!
3 Comments
Jan
on 11 Jan 2018
I do not understand your description. What does "p4" mean in "a loop (p4)"? What do you want to "combine"? What is "one element". Which element should disappear where - in the axes or in the legend? What is "p1, p2, ..." in the code?
Jos (10584)
on 11 Jan 2018
What are the undefined handles p1 p2 p3 S p5 p6 p9 ? Don't you want to use
p(k) = ...
legend(p, ...
Camille Fong
on 11 Jan 2018
Answers (1)
Jan
on 12 Jan 2018
I'm not sure, but maybe this helps:
L = legend(p4, {'p4'},'location','Best');
L.ItemHitFcn = {@hitcallback_ex, p4};
function hitcallback_ex1(src, evnt, LineH)
if strcmp(LineH.Visible, 'on')
LineH.Visible = 'off';
else
LineH.Visible = 'on';
end
end
Categories
Find more on Legend in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!