python matplotlib 自定义legend
时间: 2025-02-03 17:49:43 浏览: 61
### 如何在Python中使用Matplotlib自定义图例
为了更好地理解如何定制图例外观,在Python中的`matplotlib`库提供了多种方法来调整图例的位置、字体大小和其他属性。以下是几种常见的自定义方式。
#### 设置图例位置
可以通过参数`loc`指定图例放置的具体位置,该参数接受字符串或整数作为输入值表示不同的预设方位。例如:
```python
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], label='Line')
plt.legend(loc='upper left') # 将图例放在左上角
plt.show()
```
#### 修改图例框样式
可以利用`fancybox`, `shadow`等布尔型参数改变图例边框的效果;而通过设置`framealpha`可调节透明度[^1]。
```python
plt.plot([1, 2, 3], label='Fancy Legend Box')
plt.legend(fancybox=True, shadow=True, framealpha=0.5)
plt.show()
```
#### 调整图例内文字特性
对于想要修改图例内部文本样式的场景,则能借助于`prop`字典传递给`legend()`函数实现对字体家族(`family`)、粗细程度(`weight`)以及字号(`size`)等方面的控制。
```python
from matplotlib.font_manager import FontProperties
font = FontProperties()
font.set_family('serif')
font.set_weight('bold')
font.set_size('large')
plt.plot([1, 2, 3], label='Styled Text in Legend')
plt.legend(prop=font)
plt.show()
```
#### 控制标记尺寸与线条宽度
当涉及到散点图或者带有不同线宽的折线图时,还可以单独设定图例里代表数据系列的小图标大小(即`markerscale`)和对应线条厚度(即`handlelength`),从而达到更美观一致的整体效果[^4]。
```python
plt.scatter([1, 2, 3], [4, 5, 6], s=[70, 80, 90], c=['red'], marker='o', label='Scatter Points')
line, = plt.plot([1, 2, 3], 'b-', lw=4, label='Thick Line')
plt.legend(markerscale=2., handlelength=0.8)
plt.show()
```
阅读全文
相关推荐


















