图例是标记图上数据的有用方法。以下示例说明了如何创建图例并进行一些常规修改,例如更改位置,设置字体大小和添加标题。我们还可以创建具有多列的图例,或为所绘制数据的子集创建图例。
创建简单图例
创建一个带有折线图和散点图的图形。为每个图表添加带有说明的图例。指定图例标签作为该legend
函数的输入。
figure
x1 = linspace(0,5);
y1 = sin(x1/2);
plot(x1,y1)
hold on
x2 = [0 1 2 3 4 5];
y2 = [0.2 0.3 0.6 1 0.7 0.6];
scatter(x2,y2,'filled')
hold off
legend('sin(x/2)','2016')
使用DisplayName指定标签
或者,我们也可以使用DisplayName
属性指定图例标签。调用绘图函数时,将DisplayName
属性设置为“名称-值”对。然后,调用legend
命令以创建图例。
x1 = linspace(0,5);
y1 = sin(x1/2);
plot(x1,y1,'DisplayName','sin(x/2)')
hold on
x2 = [0 1 2 3 4 5];
y2 = [0.2 0.3 0.6 1 0.7 0.6];
scatter(x2,y2,'filled','DisplayName','2016')
legend
添加或删除数据系列时,图例会自动更新。如果将更多数据添加到轴,请使用该DisplayName
属性指定标签。如果未设置DisplayName
属性,则图例将使用'dataN'
形式的标签。
为2017年数据添加散点图。
x3 = [0 1 2 3 4 5];
y3 = [0.1 0.4 0.6 0.9 0.8 0.7];
scatter(x3,y3,'filled','DisplayName','2017')
drawnow
hold off
自定义图例外观
legend
函数创建一个Legend
对象。Legend
对象拥有可以用来自定义图例的外观,如Location
,Orientation
,FontSize
,和Title
属性。参见帮助文件查看完整列表。
您可以通过两种方式设置属性:
- 在
legend
命令中使用名称-值对。在大多数情况下,当使用名称-值对时,必须在元胞数组中指定标签,例如legend({'label1','label2'},'FontSize',14)
。 - 使用
Legend
对象。您可以将Legend
对象作为legend
函数的输出参数返回,例如lgd = legend
。然后,使用lgd
点符号来设置属性,例如lgd.FontSize = 14
。
图例位置和方向
通过将Location
和Orientation
属性设置为名称-值对来指定图例的位置和方向。将位置设置为八个基本方向或基本方向之一比如'northwest'
。在这种情况下,将方向设置为'vertical'
(默认)或'horizontal'
。在单元格数组中指定标签。
x1 = linspace(0,5);
y1 = sin(x1/2);
plot(x1,y1)
hold on
x2 = [0 1 2 3 4 5];
y2 = [0.2 0.3 0.6 1 0.7 0.6];
scatter(x2,y2,'filled')
hold off
legend({'sin(x/2)','2016'},'Location','northwest','Orientation','horizontal')
图例字体大小和标题
通过设置FontSize
和Title
属性来指定图例字体大小和标题。将Legend
对象分配给变量lgd
。然后,使用lgd
来使用点表示法更改属性。
x1 = linspace(0,5);
y1 = sin(x1/2);
plot(x1,y1,'DisplayName','sin(x/2)')
hold on
x2 = [0 1 2 3 4 5];
y2 = [0.2 0.3 0.6 1 0.7 0.6];
scatter(x2,y2,'filled','DisplayName','2016')
hold off
lgd = legend;
lgd.FontSize = 14;
lgd.Title.String = '2016 Data';
多列图例
创建具有六个折线图的图表。通过将NumColumns
属性设置为2,添加具有两列的图例。
x = linspace(0,10);
y1 = sin(x);
y2 = sin(0.9*x);
y3 = sin(0.8*x);
y4 = sin(0.7*x);
y5 = sin(0.6*x);
y6 = sin(0.5*x);
plot(x,y1,'DisplayName','sin(x)')
hold on
plot(x,y2,'DisplayName','sin(0.9x)')
plot(x,y3,'DisplayName','sin(0.8x)')
plot(x,y4,'DisplayName','sin(0.7x)')
plot(x,y5,'DisplayName','sin(0.6x)')
plot(x,y6,'DisplayName','sin(0.5x)')
hold off
lgd = legend;
lgd.NumColumns = 2;
在图例中包括图表子集
合并两个条形图和一个散点图。通过指定Bar
对象b1
和b2
,创建一个仅包含条形图的图例,作为legend
函数的第一个输入参数。在向量中指定对象。
x = [1 2 3 4 5];
y1 = [.2 .4 .6 .4 .2];
b1 = bar(x,y1);
hold on
y2 = [.1 .3 .5 .3 .1];
b2 = bar(x,y2,'BarWidth',0.5);
y3 = [.2 .4 .6 .4 .2];
s = scatter(x,y3,'filled');
hold off
legend([b1 b2],'Bar Chart 1','Bar Chart 2')
注:本文根据MATLAB官网内容修改而成。
我推荐给你以下的视频教程,特点是没有PPT,不掺水,直接编程环境下的实操课程: 用360分钟了解MATLAB编程《MATLAB编程360》视频课程:
MATLAB编程360 - 网易云课堂study.163.comstudy.163.com