问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Matlab legend函数详解:基本用法与高级技巧

创作时间:
作者:
@小白创作中心

Matlab legend函数详解:基本用法与高级技巧

引用
CSDN
1.
https://blog.csdn.net/weixin_42187898/article/details/107075755

在使用Matlab绘图时,经常需要对不同的图标进行标注,例如用“+”表示A的运动情况,“*”表示B的运动情况。Matlab提供了legend函数来实现这一功能,下面详细介绍其用法。

legend函数的基本用法

legend函数的基本语法如下:

legend(string1, string2, string3, ...)

这个函数会将字符串1、字符串2、字符串3等标注到图中,每个字符串对应的图标为画图时的图标。

示例

plot(x, sin(x), '.b', x, cos(x), '+r')
legend('sin', 'cos')

这样会把".“标识为'sin’,把”+“标识为"cos”。

还可以通过'Location'参数来指定图例标识框的位置:

  • 'North':图框内顶部附近
  • 'South':图框内底部
  • 'East':图框内右侧
  • 'West':图框内左侧
  • 'NorthEast':图框内右上角(默认)
  • 'NorthWest':图框内左上角(默认)

Matlab绘图中legend的高级用法

高级用法1:指定legend显示的位置

可以使用以下方式指定legend的位置:

legend({'str1', 'str2', 'strn'}, 1);
legend({'str1', 'str2', 'strn'}, 2);
legend({'str1', 'str2', 'strn'}, 'Location', 'SouthEast');

高级用法2:指定显示某几条曲线的legend

如果你有多条曲线,但只想显示部分曲线的legend,可以使用以下方法:

方法1:

for i = [2:5 7:10 12:15 17:20 22:25]
    set(get(get(H(i), 'Annotation'), 'LegendInformation'), 'IconDisplayStyle', 'off');
end
legend('1', '6', '11', '16', '21');

方法2:

H = plot(data);
legend(H([1 6 11 16 21]), '1', '6', '11', '16', '21');

高级用法3:legend横排

可以通过以下方式实现legend横排:

hl = legend(H([1 6 11 16 21]), '1', '6', '11', '16', '21');
set(hl, 'Orientation', 'horizon');

高级用法4:不显示方框

可以通过以下方式不显示legend的方框:

hl = legend(H([1 6 11 16 21]), '1', '6', '11', '16', '21');
set(hl, 'Box', 'off');

matlab中legend函数的使用方法

功能

legend函数用于在图形上添加图例。它可以在包含多种图形对象类型(如线条图、条形图、饼形图等)的窗口中显示一个图例。对于每条线,图例会在用户给定的文字标签旁显示线条的线型、标记符号和颜色等。当所画的是区域(patch或surface对象)时,图例会在文字旁显示表面颜色。Matlab在一个坐标轴中仅仅显示一个图例。图例的位置有几个因素决定,像遮挡的对象等,用户可以用鼠标拖动图例到恰当的位置,双击标签可以进入标签编辑状态。

用法

  • legend('string1', 'string2', ...):用指定的文字string在当前坐标轴中对所给数据的每一部分显示一个图例。
  • legend(h, 'string1', 'string2', ...):用指定的文字string在一个包含于句柄向量h中的图形显示图例。用给定的数据对相应的图形对象加上图例。
  • legend(string_matrix):用字符矩阵参量string_matrix的每一行字符串作为标签。
  • legend(h, string_matrix):用字符矩阵参量string_matrix的每一行字符串作为标签给包含于句柄向量h中的相应的图形对象加标签。
  • legend(axes_handle, ...):给由句柄axes_handle指定的坐标轴显示图例。
  • legend('off'):从当前的坐标轴,或是由axes-handle指定的坐标轴中除掉图例。
  • legend(axes_handle, 'off'):从由axes_handle指定的坐标轴中除掉图例。
  • legend_handle = legend:返回当前坐标轴中的图例句柄,若坐标轴中没有图例存在,则返回空向量。
  • legend:对当前图形中所有的图例进行刷新。
  • legend(legend_handle):对由句柄legend_handle指定的图例进行刷新。

参数说明

当在一个坐标系上画多幅图形时,为区分各个图形,Matlab提供了图例的注释说明函数。其格式如下:

legend(字符串1,字符串2,字符串3,…,参数)

参数字符串的含义如下:

  • 0:尽量不与数据冲突,自动放置在最佳位置
  • 1:放置在图形的右上角
  • 2:放置在图形的左上角
  • 3:放置在图形的左下角
  • 4:放置在图形的右下角
  • -1:放置在图形视窗的外右边

在Matlab 2019b中,legend函数的用法已经更新,如下图所示:

这个函数在图中开启了一个注释视窗,依据绘图的先后顺序,依据输出字符串对各个图形进行注释说明。如字符串1表示第一个出现的线条,字符串2表示第二个出现的线条,参数字符串确定注释视窗在图形中的位置。同时,注释视窗也可以用鼠标拖动,以便将其放置在一个合适的位置。

示例

在同一坐标内,绘出两条函数曲线并有图解注释:

x = 0:0.2:12;
plot(x, sin(x), '-', x, 1.5*cos(x), ':')
legend('First', 'Second', 'NorthEastOutside');    % 强行将注释视窗放在图形视窗的外右边。

程序运行的结果如图所示:

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号