假设您有一些代码可以生成这样的直方图
import matplotlib.pyplot as plt
import numpy as np; np.random.seed(0)
x = np.random.poisson(3, size=100)
p = 5.
plt.hist(x, bins=range(10))
l = plt.axvline(p, color="crimson")
传说
您可以使用 legend 并提供您的 axvline 作为图例处理程序,以及作为图例文本的格式化值。
plt.legend([l], ["p={}".format(p)], loc=1)
文字
您可以使用text 在图中放置文本。默认情况下,坐标是数据坐标,但您可以指定一个转换来切换,例如到轴坐标。
plt.text(.96,.94,"p={}".format(p), bbox={'facecolor':'w','pad':5},
ha="right", va="top", transform=plt.gca().transAxes )
注释
您可以使用annotate 在图中某处生成文本。与text 相比的优势在于,您可以 (a) 使用额外的箭头指向对象,以及 (b) 您可以用简单的字符串而不是变换来指定坐标系。
plt.annotate("p={}".format(p), xy=(p, 15), xytext=(.96,.94),
xycoords="data", textcoords="axes fraction",
bbox={'facecolor':'w','pad':5}, ha="right", va="top",
arrowprops=dict(facecolor='black', shrink=0.05, width=1))
锚定文本
您可以使用来自 offsetbox 的AnchoredText:
from matplotlib.offsetbox import AnchoredText
a = AnchoredText("d={}".format(d), loc=1, pad=0.4, borderpad=0.5)
plt.gca().add_artist(a)