matplotlib.axes.Axes.legend#

Axes.legend(*args, **kwargs)[源]#

在 Axes 上放置图例。

调用签名

legend()
legend(handles, labels)
legend(handles=handles)
legend(labels)

此方法的调用签名对应以下几种不同用法

1. 自动检测要在图例中显示的元素

当您不传入任何额外参数时,要添加到图例中的元素将自动确定。

在这种情况下,标签取自艺术对象(artist)。您可以在创建艺术对象时指定它们,也可以通过调用艺术对象上的 set_label() 方法来指定。

ax.plot([1, 2, 3], label='Inline label')
ax.legend()

line, = ax.plot([1, 2, 3])
line.set_label('Label via method')
ax.legend()

注意

通过使用以下划线“_”开头的标签,可以将特定的艺术对象排除在自动图例元素选择之外。以下划线开头的字符串是所有艺术对象的默认标签,因此在不带任何参数且不手动设置标签的情况下调用 Axes.legend 将导致 UserWarning 并绘制一个空图例。

2. 显式列出图例中的艺术对象和标签

为了完全控制哪些艺术对象拥有图例条目,可以分别传递一个图例艺术对象的可迭代对象,后跟一个图例标签的可迭代对象。

ax.legend([line1, line2, line3], ['label1', 'label2', 'label3'])

3. 显式列出图例中的艺术对象

这类似于方法2,但标签取自艺术对象的标签属性。示例

line1, = ax.plot([1, 2, 3], label='label1')
line2, = ax.plot([1, 2, 3], label='label2')
ax.legend(handles=[line1, line2])

4. 为现有绘图元素添加标签

不建议使用

不建议使用此调用签名,因为绘图元素与标签之间的关系仅由它们的顺序隐式决定,很容易混淆。

要为 Axes 上的所有艺术对象创建图例,请使用字符串的可迭代对象调用此函数,每个图例项一个字符串。例如

ax.plot([1, 2, 3])
ax.plot([5, 6, 7])
ax.legend(['First line', 'Second line'])
参数:
handles艺术对象(Artist 或艺术对象元组)列表,可选

要添加到图例中的艺术对象(线条、补丁)列表。如果您需要完全控制图例中显示的内容,并且上述自动机制不足以满足您的需求,请与 labels 一起使用此参数。

在这种情况下,handles 和 labels 的长度应该相同。如果不同,它们将被截断为较小的长度。

如果一个条目包含一个元组,那么元组中所有 Artist 的图例处理器将与单个标签并排放置。

labels字符串列表, 可选

要显示在艺术对象旁边的标签列表。如果您需要完全控制图例中显示的内容,并且上述自动机制不足以满足您的需求,请与 handles 一起使用此参数。

返回:
图例
其他参数:
loc字符串或浮点数对,默认值:rcParams["legend.loc"](默认值:'best'

图例的位置。

字符串 'upper left''upper right''lower left''lower right' 将图例放置在轴的相应角。

字符串 'upper center''lower center''center left''center right' 将图例放置在轴的相应边的中心。

字符串 'center' 将图例放置在轴的中心。

字符串 'best' 将图例放置在迄今定义的九个位置中与绘制的其他艺术对象重叠最少的位置。对于数据量大的绘图,此选项可能相当慢;提供一个具体位置可能会提高您的绘图速度。

位置也可以是给出图例左下角在轴坐标系中坐标的2元组(在这种情况下,bbox_to_anchor 将被忽略)。

为了向后兼容,'center right'(但不是其他位置)也可以拼写为 'right',并且每个“字符串”位置也可以给定为数字值。

位置字符串

位置代码

'best'(仅限 Axes)

0

'upper right'

1

'upper left'

2

'lower left'

3

'lower right'

4

'right'

5

'center left'

6

'center right'

7

'lower center'

8

'upper center'

9

'center'

10

bbox_to_anchorBboxBase、2元组或4元组浮点数

loc 结合用于定位图例的框。默认为 axes.bbox(如果作为 Axes.legend 的方法调用)或 figure.bbox(如果调用 figure.legend)。此参数允许图例的任意放置。

边界框坐标在 bbox_transform 给定的坐标系中解释,默认变换是 Axes 或 Figure 坐标,具体取决于调用的是哪个 legend

如果给定4元组或 BboxBase,则它指定图例放置在的边界框 (x, y, width, height)。要将图例放置在 Axes(或图)的右下象限的最佳位置:

loc='best', bbox_to_anchor=(0.5, 0., 0.5, 0.5)

2元组 (x, y) 将由 loc 指定的图例角放置在 x, y 处。例如,要将图例的右上角放置在 Axes(或图)的中心,可以使用以下关键词:

loc='upper right', bbox_to_anchor=(0.5, 0.5)
ncolsint, 默认值: 1

图例的列数。

为了向后兼容,也支持拼写 ncol,但不建议使用。如果两者都给定,则 ncols 优先。

propNone 或 FontProperties 或 字典

图例的字体属性。如果为 None(默认值),将使用当前的 matplotlib.rcParams

fontsize整数或 {'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'}

图例的字体大小。如果值为数字,则大小将为点的绝对字体大小。字符串值是相对于当前默认字体大小的。此参数仅在未指定 prop 时使用。

labelcolor字符串或列表,默认值:rcParams["legend.labelcolor"](默认值:'None'

图例中文本的颜色。可以是有效的颜色字符串(例如,'red'),也可以是颜色字符串列表。标签颜色也可以通过使用 'linecolor'、'markerfacecolor'(或 'mfc')或 'markeredgecolor'(或 'mec')来匹配线条或标记的颜色。

标签颜色可以通过 rcParams["legend.labelcolor"](默认值:'None')进行全局设置。如果为 None,则使用 rcParams["text.color"](默认值:'black')。

numpoints整数,默认值:rcParams["legend.numpoints"](默认值:1

Line2D(线)创建图例条目时,图例中的标记点数量。

scatterpoints整数,默认值:rcParams["legend.scatterpoints"](默认值:1

PathCollection(散点图)创建图例条目时,图例中的标记点数量。

scatteryoffsets浮点数可迭代对象,默认值:[0.375, 0.5, 0.3125]

为散点图图例条目创建的标记的垂直偏移(相对于字体大小)。0.0 位于图例文本的底部,1.0 位于顶部。要将所有标记绘制在同一高度,请设置为 [0.5]

markerscale浮点数,默认值:rcParams["legend.markerscale"](默认值:1.0

图例标记相对于原始绘制标记的相对大小。

markerfirst布尔值,默认值:True

如果为 True,图例标记放置在图例标签的左侧。如果为 False,图例标记放置在图例标签的右侧。

reverse布尔值,默认值:False

如果为 True,图例标签按输入的反向顺序显示。如果为 False,图例标签按输入的相同顺序显示。

版本 3.7 新增。

frameon布尔值,默认值:rcParams["legend.frameon"](默认值:True

图例是否应绘制在补丁(框)上。

fancybox布尔值,默认值:rcParams["legend.fancybox"](默认值:True

是否在构成图例背景的 FancyBboxPatch 周围启用圆角。

shadowNone、布尔值或字典,默认值:rcParams["legend.shadow"](默认值:False

是否在图例后面绘制阴影。阴影可以使用 Patch 关键字进行配置。目前不支持通过 rcParams["legend.shadow"](默认值:False)进行自定义。

framealpha浮点数,默认值:rcParams["legend.framealpha"](默认值:0.8

图例背景的 alpha 透明度。如果 shadow 被激活且 framealphaNone,则忽略默认值。

facecolor"inherit" 或 颜色,默认值:rcParams["legend.facecolor"](默认值:'inherit'

图例的背景颜色。如果为 "inherit",则使用 rcParams["axes.facecolor"](默认值:'white')。

edgecolor"inherit" 或 颜色,默认值:rcParams["legend.edgecolor"](默认值:'0.8'

图例背景补丁的边框颜色。如果为 "inherit",则使用 rcParams["axes.edgecolor"](默认值:'black')。

mode{"expand", None}

如果将 mode 设置为 "expand",则图例将水平扩展以填充 Axes 区域(如果 bbox_to_anchor 定义了图例的大小)。

bbox_transformNone 或 Transform

边界框(bbox_to_anchor)的变换。如果值为 None(默认值),将使用 Axes 的 transAxes 变换。

title字符串或 None

图例的标题。默认没有标题(None)。

title_fontpropertiesNone 或 FontProperties 或 字典

图例标题的字体属性。如果为 None(默认值),则如果存在 title_fontsize 参数,将使用该参数;如果 title_fontsize 也为 None,将使用当前的 rcParams["legend.title_fontsize"](默认值:None)。

title_fontsize整数或 {'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'},默认值:rcParams["legend.title_fontsize"](默认值:None

图例标题的字体大小。注意:此参数不能与 title_fontproperties 结合使用。如果您想在设置其他字体属性的同时设置字体大小,请使用 title_fontproperties 中的 size 参数。

alignment{'center', 'left', 'right'},默认值:'center'

图例标题和条目框的对齐方式。条目作为一个整体对齐,因此标记始终对齐。

borderpad浮点数,默认值:rcParams["legend.borderpad"](默认值:0.4

图例边框内的空白区域比例,以字体大小单位表示。

labelspacing浮点数,默认值:rcParams["legend.labelspacing"](默认值:0.5

图例条目之间的垂直间距,以字体大小单位表示。

handlelength浮点数,默认值:rcParams["legend.handlelength"](默认值:2.0

图例句柄的长度,以字体大小单位表示。

handleheight浮点数,默认值:rcParams["legend.handleheight"](默认值:0.7

图例句柄的高度,以字体大小单位表示。

handletextpad浮点数,默认值:rcParams["legend.handletextpad"](默认值:0.8

图例句柄与文本之间的填充,以字体大小单位表示。

borderaxespad浮点数,默认值:rcParams["legend.borderaxespad"](默认值:0.5

Axes 与图例边框之间的填充,以字体大小单位表示。

columnspacing浮点数,默认值:rcParams["legend.columnspacing"](默认值:2.0

列之间的间距,以字体大小单位表示。

handler_map字典或 None

将实例或类型映射到图例处理器的自定义字典。此 handler_map 会更新在 matplotlib.legend.Legend.get_legend_handler_map 找到的默认处理器映射。

draggable布尔值,默认值:False

图例是否可以用鼠标拖动。

另请参阅

Figure.legend

备注

此函数不支持某些艺术对象。详见图例指南

示例

(源代码, 2x.png, png)

使用 matplotlib.axes.Axes.legend 的示例#

插入定位器演示

插入定位器演示

简单寄生轴

简单寄生轴

寄生坐标轴演示

寄生坐标轴演示

寄生轴演示

寄生轴演示

图例选择

图例选择

填充等高线图案

填充等高线图案

填充等高线和对数颜色刻度

填充等高线和对数颜色刻度

三角等高线演示

三角等高线演示

无限线条

无限线条

具有独立条形颜色的条形图

具有独立条形颜色的条形图

带标签的条形图

带标签的条形图

堆叠条形图

堆叠条形图

带标签的组合条形图

带标签的组合条形图

绘制分类变量

绘制分类变量

带透明度的 fill_between

带透明度的 fill_between

锥形图

锥形图

离散分布作为水平条形图

离散分布作为水平条形图

虚线样式配置

虚线样式配置

带有刻度路径效果的线条

带有刻度路径效果的线条

带图例的散点图

带图例的散点图

堆叠图和流图

堆叠图和流图

阶梯图演示

阶梯图演示

路径效果演示

路径效果演示

TickedStroke 路径效果

TickedStroke 路径效果

在三维图上绘制二维数据

在三维图上绘制二维数据

将数据裁剪到坐标轴视图限制

将数据裁剪到坐标轴视图限制

参数曲线

参数曲线

饼中条形图

饼中条形图

带标签的饼图和甜甜圈图

带标签的饼图和甜甜圈图

极坐标图例

极坐标图例

Asinh 刻度

Asinh 刻度

图形解剖

图形解剖

带有坐标轴脊线的多个 Y 轴

带有坐标轴脊线的多个 Y 轴

绘制二维数据集的置信椭圆

绘制二维数据集的置信椭圆

双直方图

双直方图

累积分布

累积分布

具有多个数据集的直方图 (hist) 函数

具有多个数据集的直方图 (hist) 函数

直方图箱、密度和权重

直方图箱、密度和权重

次坐标轴

次坐标轴

组合自定义图例

组合自定义图例

使用预定义标签的图例

使用预定义标签的图例

图例演示

图例演示

数学文本

数学文本

使用 TeX 渲染数学方程

使用 TeX 渲染数学方程

时间序列的自定义刻度格式化程序

时间序列的自定义刻度格式化程序

带单位的组合条形图

带单位的组合条形图

简单图例01

简单图例01

简单图例02

简单图例02

使用 Matplotlib 制作动画

使用 Matplotlib 制作动画

约束布局指南

约束布局指南

图例指南

图例指南

紧凑布局指南

紧凑布局指南

指定颜色

指定颜色

快速入门指南

快速入门指南