1. 图例基础:从自动生成到精确定位
刚接触 Matplotlib 绘图时,我最常遇到的困惑就是:明明画了三条曲线,怎么图例只显示两条?或者图例把关键数据挡住了怎么办?这些问题的答案都藏在 plt.legend() 这个看似简单的函数里。
先看最基本的用法。当我们用 plot() 画线时,只要给每条线加上 label 参数,最后调用 plt.legend() 就能自动生成图例:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
plt.plot(x, np.sin(x), label='正弦曲线')
plt.plot(x, np.cos(x), label='余弦曲线')
plt.legend()
plt.show()
这个基础用法 90% 的情况下都能工作,但遇到复杂图表时就力不从心了。比如当我们需要:
- 把图例放在图表外侧
- 一个图表显示多个图例
- 调整图例的边框样式和背景透明度
- 动态隐藏/显示特定图例项
这时候就需要深入了解 legend() 的参数了。最常用的 loc 参数控制图例位置,支持字符串和数字两种指定方式:
plt.legend(loc='upper right') # 字符串写法
plt.legend(loc=1) # 数字写法,1 对应右上角
位置参数完整对应表:
| 字符串值 | 数字值 | 位置 |
|---|---|---|
| 'best' | 0 | 自动选择最佳 |
| 'upper right' | 1 | 右上角 |
| 'upper left' | 2 | 左上角 |
| 'lower left' | 3 | 左下角 |
| 'lower right' | 4 | 右下角 |

