Matplotlib, как писать аннотацию за пределами чертежа в кодах данных?

Моя графика от y = -1 до y = 10

Я хочу написать небольшой фрагмент текста в произвольной позиции, скажем, при x = 2000, y = 5:

ax.annotate('MgII', xy = (2000.0, 5.0), xycoords = 'data')

Теперь я хочу то же самое, но на этот раз часть текста должна быть вне графика, но в точном положении, которое я отмечаю в координатах данных:

ax.annotate('MgII', xy = (2000.0, 10.5), xycoords = 'data')

Но затем он исчезает (помните, что моя графика идет от -1 до 10). На графике много свободного места.

И, если я укажу

xy = (2000,0, 9,999)

то ярлык появляется почти там, где я хочу, только он слишком близко к верхней границе изображения. Я хочу это в y = 10.5, в частности.

Ответ 1

ax.annotate('MgII', xy=(2000.0, 10.5), xycoords='data', annotation_clip=False)

По умолчанию в единицах данных аннотация указывается только в том случае, если она находится в осях.

Возможно, вам лучше использовать смешанное преобразование:

 trans = ax.get_xaxis_transform() # x in data untis, y in axes fraction
 ann = ax.annotate('MgII', xy=(2000, 1.05 ), xycoords=trans)