1. matplotlib图例基础定位技巧
刚接触matplotlib绘图时,我经常被图例的位置问题困扰。默认的plt.legend()虽然能自动放置图例,但当图表元素较多时,这个"智能"定位反而会把图例放在遮挡数据的位置。经过多次实践,我总结出几个实用的定位方法。
最基础的定位方式是使用loc参数。这个参数接受0-10的整数值,每个数字对应图表中的特定位置。比如loc=1表示右上角,loc=2表示左上角。我习惯用这些助记词来记忆:
- 1: 右上
- 2: 左上
- 3: 左下
- 4: 右下
- 0: 自动选择最佳位置
python复制import matplotlib.pyplot as plt
plt.plot([1,2,3], label='线性增长')
plt.legend(loc=2) # 将图例固定在左上角
plt.show()
但loc参数的局限很明显 - 只能选择预设的9个固定位置。当我们需要更灵活的定位时,就要用到bbox_to_anchor这个神器了。它通过归一化坐标系(0-1范围)来精确定位,其中(0,0)是图表左下角,(1,1)是右上角。
python复制plt.legend(bbox_to_anchor=(0.5, 0.5)) # 将图例放在图表正中央
更妙的是,这个参数还支持超出0-1范围的坐标。比如(1.1,0.5)会把图例放在图表右侧外部。我在做论文图表时经常用这个技巧,既能保持图例可见,又不会遮挡数据。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 高级定位与边界框控制
掌握了基础定位后,我发现很多复杂场景需要更精细的控制。比如当图表有多个子图时,图例可能会和其他元素重叠。这时就需要理解bbox_to_anchor与loc参数的组合用法。
bbox_to_anchor实际上定义的是一个参考点,而loc参数决定图例相对于这个参考点的位置。举个例子:
python复制plt.legend(bbox_to_anchor=(1, 0.5), loc='center left')
这段代码的意思是:以图表右侧边缘(1)和垂直居中(0.5)的点为参考,将图例的中心(loc='center left')对齐到这个点。效果就是图例会紧贴在图表右侧。
我常用的几个实用组合:
- 右侧外部:bbox_to_an
