70

我有一个在 matplotlib (时间序列数据)中创建的图形,上面有一系列

matplotlib.pyplot.axvline

线。我想在靠近这些垂直线的图上创建标签(可能在线的 RHS 和图的顶部)。

4

2 回答 2

98

你可以使用类似的东西

plt.axvline(10)
plt.text(10.1,0,'blah',rotation=90)

您可能必须使用 x 和 y 值text才能使其正确对齐。您可以在此处找到更完整的文档。

于 2012-11-16T14:14:34.487 回答
23

无需手动放置的解决方案是使用“混合转换”。

变换将坐标从一个坐标系转换到另一个坐标系。通过transform参数 of指定变换text,可以给出轴坐标系中文本的xy坐标(从 x/y 轴的左到右/从上到下分别从 0 到 1)。通过混合变换,您可以使用混合坐标系。

这正是您所需要的:您拥有数据给出的 x 坐标,并且您希望将文本放置在 y 轴上相对于轴的某个位置,例如在中心。执行此操作的代码如下所示:

import matplotlib.transforms as transforms
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

# the x coords of this transformation are data, and the
# y coord are axes
trans = ax.get_xaxis_transform()

x = 10
ax.axvline(x)
plt.text(x, .5, 'hello', transform=trans)

plt.show()
于 2019-06-14T19:53:46.357 回答