在二维坐标图中我们经常对绘制的图形进行标注。在 matplotlib 中比较常用的有text和annotate两种标注方法,其中:
- text: 无指向型标注,仅仅包含注释的文本内容
- annotate: 指向型注释,不仅包含注释的文本内容还包含箭头指向,能够突显细节
plt.text()
plt.text(x, y, s, fontdict = None, **kwargs)
参数说明:
- x, y 为标注文本在绘图区域中的位置
- s 为标注文本的内容
- fontdict 为文本属性的字典,如果 fontdict 为 None,则使用默认的文本属性
- **kwargs 可以使用键值对的形式替换 fontdict 中的文本属性
示例
import numpy as np
import matplotlib.pyplot as plt
font = {'family': 'serif',
'color': 'darkred',
'weight': 'normal',
'size': 16 }
x = np.linspace(0.0, 5.0, 100)
y = np.cos(2*np.pi*x) * np.exp(-x)
plt.plot(x, y, 'k')
plt.title('Damped exponential decay', fontdict=font)
plt.text(2, 0.65, r'$\cos(2 \pi t) \exp(-t)$', fontdict=font)
plt.xlabel('time (s)', fontdict=font)
plt.ylabel('voltage (mV)', fontdict=font)
plt.subplots_adjust(left=0.15)
plt.show()
运行结果:
plt.annotate()
Matplotlib中的annotate函数可用于在图形上给数据添加文本注解,而且支持带箭头的划线工具,非常方便我们在合适的位置添加描述信息。
plt.annotate(s, xy, *args, **kwargs)
参数说明:
- s:注释文本的内容
- xy:被注释的坐标点,二维元组形如(x,y)
- xytext:注释文本的坐标点,也是二维元组,默认与xy相同
- xycoords:被注释点的坐标系属性,允许输入的值如下
- arrowprops:箭头的样式,dict(字典)型数据,如果该属性非空,则会在注释文本和被注释点之间画一个箭头。如果不设置'arrowstyle' 关键字,则允许包含以下关键字:
plt.annotate() 示例
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = ax.plot(t, s, lw=2)
ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5),
arrowprops=dict(facecolor='black', shrink=0.05))
ax.set_ylim(-2, 2)
plt.show()
运行结果: