Ответ 1
Вы можете использовать что-то вроде
plt.axvline(10)
plt.text(10.1,0,'blah',rotation=90)
вам, возможно, придется поиграть со значениями x и y в text
, чтобы правильно его выровнять.
Вы можете найти более полную документацию здесь.
У меня есть фигура, созданная в matplotlib (данные временного ряда), над которой есть серия
matplotlib.pyplot.axvline
линии. Я хотел бы создать ярлыки на графике, которые близки (вероятно, на RHS линии и к вершине рисунка) эти вертикальные линии.
Вы можете использовать что-то вроде
plt.axvline(10)
plt.text(10.1,0,'blah',rotation=90)
вам, возможно, придется поиграть со значениями x и y в text
, чтобы правильно его выровнять.
Вы можете найти более полную документацию здесь.
Решение без ручного размещения заключается в использовании "смешанных преобразований".
Преобразования преобразуют координаты из одной системы координат в другую. Задав преобразование через параметр transform
text
, вы можете задать координаты x
и y
текста в системе координат оси (переходя от 0 к 1 слева направо/сверху вниз по осям x/y соответственно), При смешанных преобразованиях вы можете использовать смешанную систему координат.
Это именно то, что вам нужно: у вас есть координата 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 = transforms.blended_transform_factory(
ax.transData, ax.transAxes)
x = 10
ax.axvline(x)
plt.text(x, .5, 'hello', transform=trans)
plt.show()