在Python的Matplotlib库中,legend
函数用于添加图例,帮助解释图表中不同数据系列或数据点的含义。legend
函数有很多参数,可以自定义图例的各个方面,从位置到样式,从字体大小到边框。下面是一些常用参数的详细解释:
-
loc
:- 类型:
str
或int
- 默认值:
'best'
- 描述: 指定图例的位置。可以是字符串(如
'upper right'
、'lower left'
等)或数字代码。'best'
表示Matplotlib会自动选择最佳位置。
- 类型:
-
fontsize
:- 类型:
str
或float
- 默认值:
rcParams['legend.fontsize']
(默认为medium
) - 描述: 图例中文字的大小。
- 类型:
-
title
:- 类型:
str
- 默认值:
None
- 描述: 图例的标题。
- 类型:
-
title_fontsize
:- 类型:
str
或float
- 默认值:
rcParams['axes.titlesize']
(默认值为large
) - 描述: 图例标题的字体大小。
- 类型:
-
frameon
:- 类型:
bool
- 默认值:
True
- 描述: 是否显示图例的边框。
- 类型:
-
framealpha
:- 类型:
float
- 默认值:
1.0
- 描述: 图例边框的透明度。
- 类型:
-
facecolor
:- 类型:
str
或rgb
或rgba
- 默认值:
'inherit'
(从axes.facecolor
继承) - 描述: 图例的背景颜色。
- 类型:
-
edgecolor
:- 类型:
str
或rgb
或rgba
- 默认值:
'0.8'
(灰色) - 描述: 图例边框的颜色。
- 类型:
-
shadow
:- 类型:
bool
- 默认值:
False
- 描述: 是否在图例周围添加阴影效果。
- 类型:
-
bbox_to_anchor
:- 类型:
(float, float)
或(float, float, float, float)
- 默认值:
(0., 1.02, 1., .102)
(相对于图表的坐标) - 描述: 用于手动指定图例的位置。可以是两个值的元组(表示相对于图表左下角的(x, y)位置),或四个值的元组(表示一个矩形框的左下角和右上角的(x, y)位置)。
- 类型:
-
ncol
:- 类型:
int
- 默认值:
1
- 描述: 图例中列的数目。如果大于1,图例将分成多列显示。
- 类型:
-
numpoints
:- 类型:
int
- 默认值:
1
- 描述: 每个图例条目的标记点数。
- 类型:
-
handletextpad
:- 类型:
float
- 默认值:
0.2
(相对于字体大小) - 描述: 图例标记与文字之间的间距。
- 类型:
-
labelspacing
:- 类型:
float
- 默认值:
0.5
(相对于字体大小) - 描述: 图例中各标签之间的垂直间距。
- 类型:
-
handlelength
:- 类型:
float
- 默认值:
2.
(点单位) - 描述: 图例标记的长度。
- 类型:
-
handleheight
:- 类型:
float
或None
- 默认值:
None
(与handlelength
相同) - 描述: 图例标记的高度。如果为
None
,则与handlelength
相同。
- 类型:
-
borderpad
:- 类型:
float
- 默认值:
0.3
(相对于字体大小) - 描述: 图例边框与其内容之间的间距。
- 类型:
-
columnspacing
:- 类型:
float
- 默认值:
2.
(点单位) - 描述: 图例中各列之间的间距。
- 类型:
-
markerscale
:- 类型:
float
- 默认值:
1.
- 描述: 图例标记的缩放比例。
- 类型:
-
prop
:- 类型:
dict
- 默认值:
None
- 描述: 一个字典,用于指定图例中文字的字体属性,如
family
、style
、weight
、size
、color
等。
- 类型:
-
mode
:- 类型:
{"expand", None}
- 默认值:
None
- 描述: 如果为
"expand"
,则图例将扩展以填充bbox_to_anchor
指定的区域。
- 类型:
-
fancybox
:- 类型:
bool
- 默认值:
False
- 描述: 是否使用圆角边框。
- 类型:
-
shadow_offset
:- 类型:
(float, float)
- 默认值:
(0.4, -0.5)
(点单位) - 描述: 阴影相对于图例的偏移量。
- 类型:
-
borderaxespad
:- 类型:
float
- 默认值:
0.5
- 描述: 图例边框与坐标轴之间的间距(相对于坐标轴的大小)。
- 类型:
以下是一个简单的示例,展示了如何使用一些这些参数:
import matplotlib.pyplot as plt# 创建一些数据
x = [1, 2, 3, 4]
y1 = [1, 4, 9, 16]
y2 = [1, 2, 3, 4]# 绘制数据
plt.plot(x, y1, label='y = x^2')
plt.plot(x, y2, label='y = x')# 添加图例
plt.legend(loc='upper left', fontsize=12, title='Legend Title', title_fontsize=14, framealpha=0.8, shadow=True)# 显示图表
plt.show()
这个示例中,图例被放置在左上角,字体大小为12,标题为“Legend Title”,标题的字体大小为14,边框透明度为0.8,并添加了阴影效果。