我有一个在 matplotlib (时间序列数据)中创建的图形,上面有一系列
matplotlib.pyplot.axvline
线。我想在靠近这些垂直线的图上创建标签(可能在线的 RHS 和图的顶部)。
我有一个在 matplotlib (时间序列数据)中创建的图形,上面有一系列
matplotlib.pyplot.axvline
线。我想在靠近这些垂直线的图上创建标签(可能在线的 RHS 和图的顶部)。
你可以使用类似的东西
plt.axvline(10)
plt.text(10.1,0,'blah',rotation=90)
您可能必须使用 x 和 y 值text
才能使其正确对齐。您可以在此处找到更完整的文档。
无需手动放置的解决方案是使用“混合转换”。
变换将坐标从一个坐标系转换到另一个坐标系。通过transform
参数 of指定变换text
,可以给出轴坐标系中文本的x
和y
坐标(从 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()