How to change the order of the legend in the Matlab version 2019b?
120 次查看(过去 30 天)
显示 更早的评论
Hi
I am trying to change the order of legends based upon the user needs. Below is the reference figure and codes (for eg.)
plot([1 2],[15,30])
>> hold on;plot([1 2],[5,35]);
>> hold on;plot([1 2],[40 40],'--k');
How to change the order of legend in the attached figure?
0 个评论
采纳的回答
Dave B
2021-10-29
编辑:Dave B
2021-10-29
With your existing .fig file, grab the line objects and feed them into legend in whatever order you like:
open('check.fig')
kids=findobj(gca,'type','Line');
legend(kids)
% or legend(kids([2 3 1])) if that's the order you like
% or legend(kids,'abc','def','ghi') if you want to update the labels
For a new plot:
figure
h1=plot([1 2],[15,30],'r','LineWidth',2);
hold on;
h2=plot([1 2],[5,35],'b','LineWidth',2);
h3=plot([1 2],[40 40],'--k','LineWidth',2);
ylim([5 50])
legend([h3 h2 h1],'3','2','1')
4 个评论
Dave B
2021-10-29
You're generally correct in your understanding but everything is upside down from what you described. That's a little confusing. I'd be surprised if that changed since 2019b, so I'm a little puzzled by your graphic above. In any case, you can be unambiguous about it by looking directly at the kids vector (see below) and you can certainly plot every combination (also below).
In general, I expect the first element of the kids vector that I defined above is the last thing plotted, and the last element of the kids vector is the first element plotted.
open('check.fig');
% I'm removing the semicolon so we can see what's in kids
% If you wanted to check these values programatically, you could use
% get(kids,'DisplayName') to get their 'names' or you can get some
% other aspect of them that you'd like to use to guide their order
kids=findobj(gca,'type','Line')
orig=gca;
Here's a look at all the combinations of orders:
figure;
t = tiledlayout(2,3);
p=perms([1 2 3]);
for i = 1:height(p)
h=copyobj(orig,t);
h.Layout.Tile=i;
kids=findobj(h,'type','Line');
legend(h,kids(p(i,:)));
title(h,sprintf('[%d %d %d]',p(i,:)))
end
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Legend 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!