在Python的Matplotlib库中,`legend` 函数用于在图表中添加图例,帮助区分不同的数据系列。下面内容是详细说明和用法示例:
基本用法
1. 绘图时指定标签
在绘制数据系列时,使用 `label` 参数定义标签,接着调用 `plt.legend` 显示图例:
python
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y1 = [1, 4, 9, 16]
y2 = [2, 3, 5, 8]
plt.plot(x, y1, label=’平方’) 设置标签
plt.plot(x, y2, label=’线性’) 设置标签
plt.legend 显示图例
plt.show
![图表示例]
关键参数
1. 位置控制 (`loc`)
通过 `loc` 参数指定图例位置:
python
plt.legend(loc=’upper right’) 右上角(默认)
plt.legend(loc=’lower left’) 左下角
plt.legend(loc=0) 自动选择最佳位置(0-10对应不同位置)
| 代码 | 位置 |
| `’best’` | 自动最佳位置 |
| `’upper right’` | 右上角 |
| `’center left’` | 左侧居中 |
2. 深入了解与样式
python
plt.legend(
title=”图例深入了解”, 添加深入了解
fontsize=12, 字体大致
shadow=True, 添加阴影
framealpha=0.5, 背景透明度(0-1)
facecolor=’lightgray’ 背景颜色
3. 调整布局
python
plt.legend(ncol=2) 分2列显示
plt.legend(bbox_to_anchor=(1, 1)) 将图例放在图表外(右侧)
自定义图例句柄
如果未在绘图时设置 `label`,可以手动创建图例:
python
line1, = plt.plot(x, y1, linestyle=’–‘)
line2, = plt.plot(x, y2, marker=’o’)
plt.legend([line1, line2], [‘系列A’, ‘系列B’]) 手动指定句柄和标签
常见难题解决
1. 图例不显示
2. 图例覆盖数据
使用 `loc` 调整位置,或通过 `bbox_to_anchor` 移出图表:
python
plt.legend(bbox_to_anchor=(1.05, 1), loc=’upper left’) 图表右侧
3. 多子图共用图例
在 `figure` 层级创建图例:
python
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.plot(x, y1, label=’系列A’)
ax2.plot(x, y2, label=’系列B’)
fig.legend 为整个figure添加图例
完整示例
python
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y1 = [1, 4, 9, 16]
y2 = [2, 3, 5, 8]
plt.plot(x, y1, ‘ro-‘, label=’平方’) 红色圆点实线
plt.plot(x, y2, ‘b^–‘, label=’线性’) 蓝色三角虚线
plt.legend(
loc=’lower right’,
title=”函数类型”,
fontsize=10,
shadow=True,
framealpha=0.8
plt.title(“图例使用示例”)
plt.xlabel(“X轴”)
plt.ylabel(“Y轴”)
plt.grid(True)
plt.show
掌握这些技巧后,可以灵活定制图例样式以适应各类图表需求!