linspace函数matlab_MATLAB作图实例:54:将图例添加到图形

b4935059f39ab41956c15a27747464d5.png

图例是标记图上数据的有用方法。以下示例说明了如何创建图例并进行一些常规修改,例如更改位置,设置字体大小和添加标题。我们还可以创建具有多列的图例,或为所绘制数据的子集创建图例。

创建简单图例

创建一个带有折线图和散点图的图形。为每个图表添加带有说明的图例。指定图例标签作为该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')

6943200342acd7de143b0bb1731b35f7.png

使用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

3a7b9628234d67bdccf59cbff5e6e879.png

自定义图例外观

legend函数创建一个Legend对象。Legend对象拥有可以用来自定义图例的外观,如LocationOrientationFontSize,和Title属性。参见帮助文件查看完整列表。

您可以通过两种方式设置属性:

  • legend命令中使用名称-值对。在大多数情况下,当使用名称-值对时,必须在元胞数组中指定标签,例如legend({'label1','label2'},'FontSize',14)
  • 使用Legend对象。您可以将Legend对象作为legend函数的输出参数返回,例如lgd = legend。然后,使用lgd点符号来设置属性,例如lgd.FontSize = 14

图例位置和方向

通过将LocationOrientation属性设置为名称-值对来指定图例的位置和方向。将位置设置为八个基本方向或基本方向之一比如'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')

a04abf151d81b16641357f370bb93c09.png

图例字体大小和标题

通过设置FontSizeTitle属性来指定图例字体大小和标题。将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';

2e0508649b64c50b9db16bda7ebbe9fd.png

多列图例

创建具有六个折线图的图表。通过将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;

ece9e201b7abc450e368940a889b5535.png

在图例中包括图表子集

合并两个条形图和一个散点图。通过指定Bar对象b1b2,创建一个仅包含条形图的图例,作为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')

50e68fc31363464af3ca098fa836fa78.png

注:本文根据MATLAB官网内容修改而成。

我推荐给你以下的视频教程,特点是没有PPT,不掺水,直接编程环境下的实操课程: 用360分钟了解MATLAB编程《MATLAB编程360》视频课程:

MATLAB编程360 - 网易云课堂study.163.com​study.163.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值