您的位置:

详解matplotlib中的ax.legend()

一、ax.legend参数

在matplotlib中,ax.legend()函数主要用于为图形添加图例。在传递参数时,我们可以使用一系列关键字参数来定制图例的位置,大小,字体等属性。以下是ax.legend()支持的常用参数:

参数名	            类型	  说明
loc	            string	指定图例的位置
bbox_to_anchor	    tuple	指定图例的锚点(外部边界或图表顶部左上)
ncol	            int	    指定图例的列数
fontsize	        int	    指定图例的字体大小
title	            string	图例的标题
frame_on	        bool	是否显示图例的边框
shadow	            bool	是否显示图例的阴影
fancybox	        bool	是否为图例的边框添加圆角
framealpha	        float	图例的边框透明度

其中,loc参数可以指定图例在哪个位置出现。它可以采用一个字符串,表示需要显示图例的位置,如'upper right'、'lower left'等。另外,loc参数也可以接收一个长度为2的元组来指定图例的位置。例如,(0.5, 0.5)表示图例的位置位于图形区域的中心。

二、ax.legend设置边框粗细

ax.legend()函数中的frame_linewidth参数用于设置图例边框的粗细程度。frame_linewidth参数需要指定一个浮点数来表示边框的粗细程度,例如:

import matplotlib.pyplot as plt
plt.style.use('ggplot')
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [2, 4, 6], label='line 1')
ax.plot([1, 2, 3], [1, 3, 5], label='line 2')
legend = ax.legend(loc='upper center', frame_linewidth=2)

在上述代码中,我们将frame_linewidth参数设置为2,表示图例边框的粗细为2个单位。图例将会位于图表的中上方。

三、ax.legend设置边框颜色

在matplotlib中,ax.legend()函数中的frame_color参数用于指定图例边框的颜色。

import matplotlib.pyplot as plt
plt.style.use('ggplot')
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [2, 4, 6], label='line 1')
ax.plot([1, 2, 3], [1, 3, 5], label='line 2')
legend = ax.legend(loc='upper center', frame_color='red')

上述代码中,我们将frame_color参数设置为'red',表示图例边框的颜色为红色。图例将会位于图表的中上方。

四、ax.legend的字体大小

在matplotlib中,ax.legend()函数中的fontsize参数用于指定图例的字体大小。fontsize参数需要指定一个整数来表示字体的大小,例如:

import matplotlib.pyplot as plt
plt.style.use('ggplot')
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [2, 4, 6], label='line 1')
ax.plot([1, 2, 3], [1, 3, 5], label='line 2')
legend = ax.legend(loc='upper center', fontsize=14)

在上述代码中,我们将fontsize参数设置为14,表示图例的字体大小为14个单位。图例将会位于图表的中上方。

五、ax.legend实例

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

# Data
x = np.linspace(-10, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# Plot
fig, ax = plt.subplots(figsize=(10,6))
ax.plot(x, y1, label='sin(x)', linewidth=2)
ax.plot(x, y2, label='cos(x)', linewidth=2)

# Legend
legend = ax.legend(loc='upper center', shadow=True, fontsize=16)
legend.get_frame().set_facecolor('#FFFFFF') # 设置图例边框颜色
plt.setp(legend.get_lines(), linewidth=4) # 设置标签线宽
plt.show()

上述代码中,我们生成了两个曲线数据y1和y2,并分别用ax.plot()将它们绘制到了图形上。随后,我们通过ax.legend()函数为该图形添加了一个图例。图例的位置位于图表顶部中心,阴影效果开启,字体大小为16。

在图例的生成后,我们对其进行了一系列自定义设置:设置图例边框为白色,标签线宽为4。

最终,我们调用plt.show()函数显示该图形。图形的结果如下所示:

matplotlib ax.legend()实例