Matlab绘图的图例,可能最普遍的是这种,只有一个图例,竖直方向排列,或者水平方向排列:
clc; clear all; close all;
t = 0:0.001:6;
A = sin(t);
B = cos(t);
figure(1312)
l1 = plot(t,A);
hold on
l2 =plot(t,B);
grid on
legendText = legend([l1,l2],'Sin','Cos','FontSize', 18,'FontName','Times New Roman','location','northeast'); % 设置图例
% set(legendText,'Orientation','horizon'); % 默认垂直排列 改为水平排列
如果想把图例分为多个,然后放到任意的位置,可能会想到直接再用一次legend,可事实上,在matlab里面,一个gca对象只能 有一个图例。gca就是所说的一个坐标轴对象,也就是我们前面看到的那个绘制的图形+外框+坐标轴。
如果要创建多个图例,我们可以另外创建和原图一样的坐标轴对象,然后设置为不可见,这样就不会覆原来绘制的图,再添加图例即可。如下:
clc; clear all; close all;
t = 0:0.001:6;
A = sin(t);
B = cos(t);
figure(1312)
l1 = plot(t,A);
hold on
l2 =plot(t,B);
grid on
legend1 = legend(l1,'Sin','FontSize', 13,'FontName','Times New Roman','location','northwest'); % 设置第2个图例
ah = axes('position',get(gca,'position'),'visible','off'); %新建一个坐标轴对象,位置和当前的坐标轴一致,并且设置为不可见,这样就不会覆原来绘制的图
legend2 = legend(ah,l2,'Cos','FontSize', 13,'FontName','Times New Roman','location','northeast'); % 设置第2个图例,注意这里需要传入建立的坐标轴对象
set(legend1,'Orientation','horizon'); % 默认垂直排列 改为水平排列
set(legend2,'Orientation','horizon'); % 默认垂直排列 改为水平排列
如果需要调整图例的位置,一般我的操作是,打开属性面板,调节到合适的位置,然后拷贝位置的值,再使用代码设置(其实,这个看似简单的方法,却很高效。):