天天看点

Matlab 画图实现两个或多个 legend 不同排版

Matlab 提供的 legend 函数,给出的 legend 经常覆盖了某些曲线(尤其是用 IEEE 模板的时候,一般图片宽度不超过 315px)

程序:

a=linspace(0,2*pi,100);
    y1=100*sin(a);
    y2=50*cos(a);
    y3=tan(a);
    y4=log(a);
    y=[y1;y2;y3;y4];
    figure
    p=plot(a,y)
    legend('sin','cos','tan','log')

           

结果如下图:

Matlab 画图实现两个或多个 legend 不同排版

这显然不是你想要的,你的 reviewers 也会肯定让你修改的!

原因是 Matlab 的 Legend 函数,只能水平或者竖直排版!

解决方法:把 legend 分成几个,相对独立,这样可以使用鼠标随意移动,确保不遮挡曲线。

结果如下图所示:

Matlab 画图实现两个或多个 legend 不同排版

程序:

a=linspace(0,2*pi,100);
y1=100*sin(a);
y2=50*cos(a);
y3=tan(a);
y4=log(a);
y=[y1;y2;y3;y4];
figure
p=plot(a,y)

legend(p(1:2),'sin','cos');
ah=axes('position',get(gca,'position'),...
            'visible','off');
legend(ah,p(3:4),'tan','log','location','west');
           

继续阅读