Adding a legend from a loop into one element

조회 수: 3 (최근 30일)
Camille Fong
Camille Fong 2018년 1월 11일
답변: Jan 2018년 1월 12일
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
Jos (10584)
Jos (10584) 2018년 1월 11일
What are the undefined handles p1 p2 p3 S p5 p6 p9 ? Don't you want to use
p(k) = ...
legend(p, ...
Camille Fong
Camille Fong 2018년 1월 11일
Hi Jan, Sorry if my question was not clear. I didn't copy paste my whole code.
My loop is as follow
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
end
L = legend([p4],{'p4'},'location','Best');
L.ItemHitFcn = @hitcallback_ex1;
I added a function at the end of my code to allow the user to click on the legend to put it on or off the visibility of the loop.
The function is as followed :
function hitcallback_ex1(src,evnt)
if strcmp(evnt.Peer.Visible,'on')
evnt.Peer.Visible = 'off';
else
evnt.Peer.Visible = 'on';
end
end
end
I want to be able to click on the legend p4, and turn off the visibility of the loop (see attachment). At the moment, nothing happens when I clicked on p4. I hope it is more clear now.

댓글을 달려면 로그인하십시오.

답변 (1개)

Jan
Jan 2018년 1월 12일
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
Do you know FEX: ClickableLegend? It might be useful also.

카테고리

Help CenterFile Exchange에서 Legend에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by