声明:
- 翻译自官方文档
- 并非直译
- 在一些官方代码中去掉了不重要的部分
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 | 等等 |
本文介绍了如何使用matplotlib的annotate()函数进行图形注释,包括设置注释的位置、文字及箭头样式等,并提供了实例演示。
805

被折叠的 条评论
为什么被折叠?



