声明:
- 翻译自官方文档
- 并非直译
- 在一些官方代码中去掉了不重要的部分
Annotations
Annotation,意为“注释”。本文将依照matplotlib官方文档,摘取Annotation章节中的常用部分,结合实例予以介绍。
Annotation基础
matplotlib中的text()
函数可以在坐标轴(Axes)中的指定位置添加文字。文字一般是用来解释图形的,在matplotlib中annotate()
经常和text()
结合使用,注释中既包括标注(如指示箭头),又包括文字,如下图所示。因此,在添加一个注释时,我们至少考虑两点:
- 标注的位置
xy
,是一个二维元组,形如(2, 3)。 - 文字的位置
xytext
,是一个二维元组。
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
t = np.arange(0., 5., 0.01)
s = np.cos(2 * np.pi * t)
ax.plot(t, s, lw=2) # lw表示线条宽度
ax.annotate('local max', xy=(2, 1),
xytext=(3, 1.5),
arrowprops={facecolor: 'black'})
ax.set_ylim(-2, 2)
plt.show()
在上面的例子中,xy
和xytext
的坐标系被称为data coordinate,这是xy
默认的参考系(参数是xycoords
),而xytext
的参考系(参数是textcoords
)默认与xy
相同。坐标系参数值如下表:
参数值 | 坐标系 |
---|---|
‘figure points’ | 以图片为坐标系,左下角数值低 |
‘figure pixels’ | 同上,区别是points和pixels,实际看不出什么差距 |
‘figure fraction’ | 以图片为坐标系,数值是图片大小的比例,(0, 0)表示坐下,(1, 1)表示右上 |
‘axes points’ | 以坐标轴为参考系,… |
‘axes pixels’ | 以坐标轴为参考系, … |
‘axes fraction | 以坐标轴为参考系, … |
‘data’ | 使用坐标轴上的数据点,常用!例如上图中标注位置(2, 1)对应横坐标值为2,纵坐标值为1 |
例如,我们将文字的参考系改为axes fraction
的,即:
ax.annotate('local max', xy=(3, 1),
xycoords='data', xytext=(0.8, 0.95),
textcoords='axes fraction',
arrowprops=dict(facecolor='black'))
正如上面例子所示,用参数arrowprops
来设置标注箭头的属性,该参数的值是一个字典(字典的键是属性名,值是属性值),相关属性如下表所示:
属性名 | 介绍 |
---|---|
width | 箭头的宽度 |
frac | 箭头长度的比例 |
headwidth | 箭头头部的宽度 |
shrink | 标注位置到文字的比例 |
**kwargs | 等等 |