首页 > 编程笔记 > Python笔记 阅读:1

Matplotlib text():为图表添加注释(附带实例)

为了使图表中的每个数据点的值更清晰,可以为数据点添加注释。Matplotlib 中的注释有两种,一种是简单的文本,另一种带有箭头的文本。

使用 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()

相关文章