Matplotlib text():为图表添加注释(附带实例)
为了使图表中的每个数据点的值更清晰,可以为数据点添加注释。Matplotlib 中的注释有两种,一种是简单的文本,另一种带有箭头的文本。
使用 pyplot 模块中的 text() 函数或 Axes 对象的 text() 方法,可以为图表中的数据点添加简单的注释。text() 函数和 text() 方法的语法相同,前两个参数分别指定数据点的 xy 坐标,第三个参数指定要添加的注释。
下面的代码是使用 text() 函数为图表中最大值的数据点添加“最大值”注释:

图 1 为数据点添加注释
本例的完整代码如下:
如需让注释与数据点水平居中对齐,可以为 text() 函数或 text() 方法指定 ha 参数,并将该参数的值设置为 center:

图 2 将注释居中对齐
下面的代码为图表中的所有数据点添加注释,注释的内容是每个数据点的值:

图 3 为所有数据点添加注释
本例的完整代码如下:
使用 pyplot 模块中的 text() 函数或 Axes 对象的 text() 方法,可以为图表中的数据点添加简单的注释。text() 函数和 text() 方法的语法相同,前两个参数分别指定数据点的 xy 坐标,第三个参数指定要添加的注释。
下面的代码是使用 text() 函数为图表中最大值的数据点添加“最大值”注释:
plt.text(5, 99, '最大值')如图所示:

图 1 为数据点添加注释
本例的完整代码如下:
import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np mpl.rcParams['font.sans-serif'] = 'SimSun' x = range(1, 13) date = [str(d) + '月' for d in x] np.random.seed(10) y = np.random.randint(10, 100, 12) fig, ax = plt.subplots() ax.plot(x, y) ax.xaxis.set_ticks(x, date) ax.yaxis.set_ticks(range(10, 101, 10)) plt.text(5, 99, '最大值') plt.show()下面的代码是使用 text() 方法实现相同的功能:
ax.text(5, 99, '最大值')
如需让注释与数据点水平居中对齐,可以为 text() 函数或 text() 方法指定 ha 参数,并将该参数的值设置为 center:
plt.text(5, 99, '最大值', ha='center')或
ax.text(5, 99, '最大值', ha='center')如下图所示:

图 2 将注释居中对齐
下面的代码为图表中的所有数据点添加注释,注释的内容是每个数据点的值:
for a,b in zip(x, y): ax.text(a, b, b, ha='center')如下图所示:

图 3 为所有数据点添加注释
本例的完整代码如下:
import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np mpl.rcParams['font.sans-serif'] = 'SimSun' x = range(1, 13) date = [str(d) + '月' for d in x] np.random.seed(10) y = np.random.randint(10, 100, 12) fig, ax = plt.subplots() ax.plot(x, y) ax.xaxis.set_ticks(x, date) ax.yaxis.set_ticks(range(10, 101, 10)) for x1, y1 in zip(x, y): ax.text(x1, y1, ha='center') plt.show()