How to add a legend to a figure, but a legend that changes every iteration in a loop ?
조회 수: 13 (최근 30일)
이전 댓글 표시
I have a "while" loop (while i< tmax ). What i would like to do is to add the element "curve -- i " to the legend every iteration "i". For example if "i" goes from 1 to 3, the legend will be: curve1 curve 2 curve 3. If "i" goes from 1 to 2, the legend will be only: curve1 curve 2. Is it possible to ensure this flexibility in the legend?
댓글 수: 0
채택된 답변
Madhav Rajan
2015년 8월 7일
I understand that you want to add a legend to your figure that changes at every iteration of the loop. You can use the ' drawnow ' function to draw your legend and update your figures. You can refer the example shown below. I have also included a 3 second delay between every iteration to see the legend's string changing from 'curve 1' to 'curve1 curve 2' and so on.
j = 1;
prev = '';
while j < 4
ph(j) = plot(rand(1,20));
hold on
curr = [prev sprintf('curve %d', j)];
legend(ph(j), curr);
prev = curr;
j = j+1
drawnow; % draw now function
pause(3); % Added a three second delay to show each iteration, you can modify this.
end
hold off
Hope this helps.
추가 답변 (2개)
Sergio Lobo
2017년 7월 29일
I found this modification to work better:
j = 1;
leg = {'a', 'b', 'x'};
figure()
hold on
while j < 4
plot(rand(1,20))
curr(j) = leg(j)
legend( curr);
j = j+1;
pause(3);
end
hold off
댓글 수: 0
Walter Roberson
2015년 8월 7일
You can use sprintf() to construct the strings that you legend() . For example,
i = 0;
residue = sqrt(2);
while residue > 0.1
i = i + 1;
h(i) = plot(rand(1,20));
hold on
legend(h(i), sprintf('curve %d', i));
residue = residue - rand();
end
참고 항목
카테고리
Help Center 및 File Exchange에서 Legend에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!