如何使用 matplotlib 显示文本?

6 python numpy matplotlib python-2.7 python-3.x

我想这样做:

我有这个 python 代码:

import numpy as np
import pylab as plt

a = np.array([1,2,3,4,5,6,7,8,9,10])
b = np.array([7,8,6,3,2,1,5,8,4,15])
c = plt.plot(a,b,'.')
d = 5
plt.text(2,3, "d = "+d) #This line is the problem because i have not the value of d !
plt.show()
Run Code Online (Sandbox Code Playgroud)

所以实际上我只想显示 d 的值,我也想显示 d 的值,但相对例如在右下角而不是一些坐标。可以用 Python 做到这一点吗?

非常感谢 !

Cor*_*mer 7

您可以使用transform参数的相对坐标从地方0.01.0例如

plt.text(0.5,
         0.67,
         "d = {}".format(d),
         transform=plt.gca().transAxes)
Run Code Online (Sandbox Code Playgroud)

在这个局部系统中(0, 0)是图的左下角和(1, 1)右上角。这是在绘图的不同位置放置和旋转文本的很好参考


Imp*_*est 5

文本

您可以使用text在图中放置文本。默认情况下,坐标是数据坐标,但您可以指定转换以切换到例如轴坐标。

plt.text(.96,.94,"d={}".format(d), bbox={'facecolor':'w','pad':5},
         ha="right", va="top", transform=plt.gca().transAxes )
Run Code Online (Sandbox Code Playgroud)

注释

您可以使用annotate在图中的某处生成文本。与之相比的优势text在于您可以 (a) 使用附加箭头指向一个对象,以及 (b) 您可以根据简单的字符串而不是变换来指定坐标系。

plt.annotate("d={}".format(d), xy=(p, 15), xytext=(.96,.94), 
            xycoords="data", textcoords="axes fraction",
            bbox={'facecolor':'w','pad':5}, ha="right", va="top")
Run Code Online (Sandbox Code Playgroud)

锚定文本

您可以使用AnchoredTextfrom offsetbox:

from matplotlib.offsetbox import AnchoredText
a = AnchoredText("d={}".format(d), loc=1, pad=0.4, borderpad=0.5)
plt.gca().add_artist(a)
Run Code Online (Sandbox Code Playgroud)