[转] matlab中legend的自由设置

在绘制plot图的过程中,有时候会遇到线条比较多legend太长想将其分列的情况,经搜索在百度知道上找到了下边这两种方法,各有千秋,适用于不同的情况:

转自:https://zhidao.baidu.com/question/624168427868739764.html

方法1:

采用代码画legend,参考如下:

 1 clear ;
 2 
 3 clc;
 4 figure(1);
 5 cxd = rand(10,6)*0.8;  %%%%% 产生0到0.8的随机数
 6 h2=plot(cxd);
 7 set(h2(1),'LineStyle','-','LineWidth',2,'Color','b','Marker','o',...
 8        'MarkerEdgeColor','b','MarkerFaceColor','b','MarkerSize',5)
 9 set(h2(2),'LineStyle','-','LineWidth',2,'Color','m','Marker','o',...
10        'MarkerEdgeColor','m','MarkerFaceColor','m','MarkerSize',5)
11 set(h2(3),'LineStyle','-','LineWidth',2,'Color','r','Marker','o',...
12        'MarkerEdgeColor','r','MarkerFaceColor','r','MarkerSize',5)
13 set(h2(4),'LineStyle','-','LineWidth',2,'Color','c','Marker','o',...
14        'MarkerEdgeColor','c','MarkerFaceColor','c','MarkerSize',5)
15 set(h2(5),'LineStyle','-','LineWidth',2,'Color','k','Marker','o',...
16        'MarkerEdgeColor','k','MarkerFaceColor','k','MarkerSize',5)
17 set(h2(6),'LineStyle','-','LineWidth',2,'Color','g','Marker','o',...
18        'MarkerEdgeColor','g','MarkerFaceColor','g','MarkerSize',5)
19 %下面都是为了把图例放到合适的位置而设置的
20 hold on
21 x=[[1 1  4 4  7 7 ]+0.5;[1 1  4 4  7 7 ]+1.5];
22 y=[[9 8  9 8  9 8 ]./10+0.05;[9 8  9 8  9 8 ]./10+0.05];
23 h3=plot(x,y);
24 set(h3(1),'LineStyle','-','LineWidth',2,'Color','b')
25 set(h3(2),'LineStyle','-','LineWidth',2,'Color','m')
26 set(h3(3),'LineStyle','-','LineWidth',2,'Color','r')
27 set(h3(4),'LineStyle','-','LineWidth',2,'Color','c')
28 set(h3(5),'LineStyle','-','LineWidth',2,'Color','k')
29 set(h3(6),'LineStyle','-','LineWidth',2,'Color','g')
30 %以上是为了画图例线
31 hold on
32 x1=[[1 1  4 4  7 7 ]+1;[1 1  4 4  7 7 ]+1];
33 y1=[[9 8  9 8  9 8 ]./10+0.05;[9 8  9 8  9 8 ]./10+0.05];
34 h4=plot(x1,y1);
35 set(h4(1),'Marker','o','MarkerEdgeColor','b','MarkerFaceColor','b','MarkerSize',5)
36 set(h4(2),'Marker','o','MarkerEdgeColor','m','MarkerFaceColor','m','MarkerSize',5)
37 set(h4(3),'Marker','o','MarkerEdgeColor','r','MarkerFaceColor','r','MarkerSize',5)
38 set(h4(4),'Marker','o','MarkerEdgeColor','c','MarkerFaceColor','c','MarkerSize',5)
39 set(h4(5),'Marker','o','MarkerEdgeColor','k','MarkerFaceColor','k','MarkerSize',5)
40 set(h4(6),'Marker','o','MarkerEdgeColor','g','MarkerFaceColor','g','MarkerSize',5)
41 %以上是为了画图例的点
42 legends={'cxd1','cxd2','cxd3','cxd4','cxd5','cxd6'};
43 tx=[1 1  4 4  7 7 ]+1.8;
44 ty=[9 8  9 8  9 8 ]./10+0.05;
45 for i=1:6
46     text(tx(i),ty(i),legends{i});
47 end   
48 %以上是为了设置图例中字的放置位置   
49 xlim([1,10]);ylim([0,1]);
50 xlabel('x');ylabel('y');title('legend测试');
51 grid on;box off;

 

 

方法2:
分别构造两个legend,见下面的例子:
 1 a=0:0.01:4*pi;
 2 y1=100*sin(a);
 3 y2=50*cos(a);
 4 y3=20*sin(2*a);
 5 y4=tan(a);
 6 y5=log(a);
 7 y6=tan(2*a);
 8 y=[y1;y2;y3;y4;y5;y6];
 9 figure
10 p=plot(a,y)
11  
12 legend(p(1:3),'sin','cos','sin(2a)');
13 ah=axes('position',get(gca,'position'),'visible','off');
14 legend(ah,p(4:6),'tan','log','tan(2a)');
图出来以后,将legend图框拖到合适的位置,
不喜欢有外框,可以关掉(legend boxoff)
 
posted @ 2018-10-25 10:19  Dontstop  阅读(3786)  评论(0编辑  收藏  举报