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)