matplotlib.figure.Figure.legend#

Figure.legend(*args, **kwargs)[source]#

在图形上放置图例。

调用签名

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

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

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

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

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

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

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

可以通过定义以下划线开头的标签,将特定线条排除在自动图例元素选择之外。这是所有 artist 的默认设置,因此调用 Figure.legend 不带任何参数且不手动设置标签将导致不绘制图例。

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

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

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

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

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

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

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

不建议使用

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

要为所有 Axes 上的所有 artist 创建图例,请使用可迭代的字符串(每个图例项一个)调用此函数。例如:

fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.plot([1, 3, 5], color='blue')
ax2.plot([2, 4, 6], color='red')
fig.legend(['the blues', 'the reds'])
参数:
handleslist of Artist, 可选

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

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

labels字符串列表, 可选

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

返回:
图例
其他参数:
loc字符串或浮点数对,默认值: 'upper right'

图例的位置。

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

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

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

位置也可以是一个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

如果图使用受限布局管理器,loc 关键字参数的字符串代码可以通过使用前缀“outside”来获得更好的布局行为。在角落处存在歧义,因此“outside upper right”将在布局中为图例在其余轴的上方腾出空间,而“outside right upper”将在布局的右侧腾出空间。除了上面列出的 loc 值之外,我们还有“outside right upper”、“outside right lower”、“outside left upper”和“outside left lower”。有关更多详细信息,请参阅图例指南

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

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

Bbox 坐标在由 bbox_transform 给定的坐标系中进行解释,默认变换是 Axes 或 Figure 坐标,具体取决于调用了哪个 legend

如果给出一个4元组或 BboxBase,则它指定了图例放置的 bbox (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 优先。

prop无,或 FontProperties 或字典

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

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

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

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

图例中文本的颜色。可以是有效的颜色字符串(例如,“red”),也可以是颜色字符串列表。labelcolor 也可以设置为与线条或标记的颜色匹配,使用“linecolor”、“markerfacecolor”(或“mfc”)或“markeredgecolor”(或“mec”)。

Labelcolor 可以通过全局设置 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 周围启用圆角。

shadow无,布尔值或字典,默认值: 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_transform无或 Transform

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

title字符串或 None

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

title_fontproperties无,或 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

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

另请参阅

Axes.legend

备注

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

使用 matplotlib.figure.Figure.legend 的示例#

图例演示

图例演示

约束布局指南

约束布局指南

图例指南

图例指南