matlab 的 legend 用法

来源:互联网 发布:java cs 编辑:程序博客网 时间:2024/06/05 10:14

matlab绘图中legend的终极用法

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%持续更新。                                                                                                    当前: 20100108      %

%仅作笔记。                                                                                                     作者:    keyflying     %

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

legend有时候挺烦人的,尽管大多时候挺好用。

基本数据:

data = rand(25)+repmat(1:25,25,1);
H = plot(data);

基本用法:

legend({'str1','str2','strn'});

高级用法1:指定legend显示的位置:

legend({'str1','str2','strn'},1);

legend({'str1','str2','strn'},2);

legend({'str1','str2','strn'},'Location','SouthEast');

可选的位置很多:

North:Inside plot box near top
South:Inside bottom
EastI:nside right
West:Inside left
NorthEast:Inside top right (default)
NorthWest:Inside top left
SouthEast:Inside bottom right
SouthWest:Inside bottom left
NorthOutside:Outside plot box near top
SouthOutside:Outside bottom
EastOutside:Outsideright
WestOutside:Outside left
NorthEastOutside:Outside top right
NorthWestOutside:Outside top left
SouthEastOutside:Outside bottom right
SouthWestOutside:Outside bottom left
Best:Least conflict with data in plot
BestOutside:Least unused space outside plot

通常,用'Best‘比较不错

高级用法2:指定显示某几条曲线的legend:

方法1:复杂到吐血

例如你有25条曲线,想显示其中1,6,11,16,21的legend,则

for i = [2:5 7:10 12:15 17:20 22:25]
     set(get(get(H(i),'Annotation'),'LegendInformation'),'IconDisplayStyle','off');
end
legend('1','6','11','16','21');

方法2:简单到郁闷

H = plot(data);
legend(H([1 6 11 16 21],'1,'6','11’,'16','21');

高级用法3:legend横排

hl = legend(H([1 6 11 16 21],'1,'6','11’,'16','21');
set(hl,'Orientation','horizon')

高级用法4:不显示方框:

hl = legend(H([1 6 11 16 21],'1,'6','11’,'16','21');
set(hl,'Box','off');

参考文献

http://www.mathworks.cn/access/helpdesk/help/techdoc/creating_plots/braliom.html

doc legend

Site:http://hi.baidu.com/keyflying/item/7b39e9bbdcaceba5ebba936f

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

另外,去掉legend边框,可以参考:http://www.newsmth.net/nForum/#!article/Paper/62848

legend('x','y')
legend('boxoff') 
  
写两次就好了。我最初尝试着写成legend('x','y','boxoff')是不行的。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

修改legend的字体:

legend1=legend('x','y');
set(legend1,'FontName','Times New Roman','FontSize',12,'FontWeight','normal');

修改legend位置:

i=0;%i=0,自动调整最佳位置;i=1,右上;i=2,左上;i=3,左下;i=4,右下;

legend1=legend('x','y',i);

20160518

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

最好的说明文档,当然是帮助文档:

matlab:

doc legend

 

legend('hide'), legend(axes_handle,'hide') makes the legend in the current axes or the axes specified by axes_handle invisible.

legend('show'), legend(axes_handle,'show') makes the legend in the current axes or the axes specified by axes_handle visible. A legend is created if one did not exist previously. Legends created automatically are limited to depict only the first 20 lines in the plot; if you need more legend entries, you can manually create a legend for them all with legend('string1','string2',...) syntax.

legend('boxoff'), legend(axes_handle,'boxoff') removes the box from the legend in the current axes or the axes specified by axes_handle, and makes its background transparent.

legend('boxon'), legend(axes_handle,'boxon') adds a box with an opaque background to the legend in the current axes or the axes specified by axes_handle.

0 0
原创粉丝点击