1. 函数功能
对点(x,y)添加带箭头的注释文本。
2. 函数语法
Axes.annotate(text, xy, xytext=None, xycoords='data', textcoords=None,
arrowprops=None, annotation_clip=None
3. 函数参数与示例
3.1 标注点与标注文本
参数 | 含义 |
---|
text | 注释文本 |
xy | (float,float),浮点数组成的元组,被注释点的坐标 |
xytext | (float,float),浮点数组成的元组,放置注释文本的坐标 |
xycoords | 被注释点的坐标系属性 ,不太理解 |
textcoords | 注释文本的坐标系属性 ,不太理解 |
3.2 箭头属性
3.2.1 箭头类型
参数 | 含义 |
---|
arrowstyle | 箭头类型,常见类型如下 |


3.2.2 连接类型
参数 | 含义 |
---|
connectionstyle | 连接类型,常见类型如下: |


3.2.3 示例代码
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 500)
y = np.sin(x)
plt.plot(x, y, c='m')
plt.xlim(0, 2 * np.pi)
plt.ylim(-1, 1)
plt.annotate('max', xy=(np.pi / 2, 1), xytext=(np.pi, 0.8),
arrowprops=dict(arrowstyle='-|>',
connectionstyle='angle3',color='red'))
plt.grid()
plt.show()

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 500)
y = np.sin(x)
plt.plot(x, y, c='m')
plt.xlim(0, 2 * np.pi)
plt.ylim(-1, 1)
plt.annotate('max', xy=(np.pi / 2, 1), xytext=(np.pi, 0.8),
arrowprops=dict(arrowstyle='fancy',
connectionstyle='arc3',color='red'))
plt.grid()
plt.show()

import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['axes.unicode_minus'] = False
plt.text(0.5, 2.0, '101亿元\n 0.8%',
bbox=dict(boxstyle='Circle', facecolor='snow', alpha=0.6),
fontsize=10, color='m')
plt.annotate('', xy=(3, 5), xytext=(1.2, 2.3),
arrowprops=dict(arrowstyle='-|>,head_length=1.0,head_width=0.6',
connectionstyle='angle,angleA=-30,angleB=60,rad=80',
color='red'))
plt.text(3, 5, '300亿元\n约2.0%',
bbox=dict(boxstyle='Round', facecolor='snow', alpha=0.8),
fontsize=12, color='m')
plt.annotate('', xy=(5.8, 8), xytext=(3.7, 5.5),
arrowprops=dict(arrowstyle='simple,head_length=1.2,head_width=1,tail_width=0.2',
connectionstyle=('arc3, rad=0.3'), color='red'))
plt.text(6, 7.6, '超千亿元\n约5.0%',
bbox=dict(boxstyle='Sawtooth', facecolor='snow'),
fontsize=14, color='m')
plt.xlim(0, 8.5)
plt.ylim(0, 12)
plt.show()

3.3 注释字体属性
参数 | 含义 |
---|
fontsize | 注释文本字体大小 |
color | 注释文本字体颜色 |
alpha | 注释文本字体透明度 |
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['axes.unicode_minus'] = False
plt.annotate('300亿元\n约2.0%', xy=(6, 8), xytext=(3, 5),
fontsize=14, color='b', alpha=0.5,
bbox=dict(boxstyle='Sawtooth', facecolor='snow'),
arrowprops=dict(arrowstyle='<|-,head_length=1.0,head_width=0.6',
connectionstyle='angle,angleA=-30,angleB=60,rad=10',
color='red'))
plt.xlim(0, 8.5)
plt.ylim(0, 12)
plt.show()

3.4 注释文本框设置
annotate()函数中的注释文本框设置同text()函数中的注释文本框设置,使用bbox参数设置文本框属性,参见text函数的bbox部分text函数
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['axes.unicode_minus'] = False
plt.annotate('101亿元\n 0.8%', xy=(2.8, 4.8), xytext=(1.2, 2.3),
bbox=dict(boxstyle='Circle', facecolor='y', alpha=0.2),
arrowprops=dict(arrowstyle='-|>,head_length=1.0,head_width=0.6',
connectionstyle='angle,angleA=-30,angleB=60,rad=80',
color='red'))
plt.annotate('300亿元\n约2.0%', xy=(6, 8), xytext=(3, 5),
fontsize=14, color='m', bbox=dict(boxstyle='Sawtooth', facecolor='snow'),
arrowprops=dict(arrowstyle='simple,head_length=1.2,head_width=1,tail_width=0.2',
connectionstyle=('arc3, rad=0.3'), color='red'))
plt.text(6.2, 7.6, '超千亿元\n 约5%',
bbox=dict(boxstyle='Circle', facecolor='r', alpha=0.3),
fontsize=16, color='k')
plt.xlim(0, 8.5)
plt.ylim(0, 12)
plt.show()
