2013-08-30 2 views
14

Мой графический идет от у = -1 у = 10Matplotlib, как написать аннотацию за пределами чертежа в кодах данных?

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

топор. аннотирования («MgII», х = (2000,0, 5,0), xycoords = «данные»)

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

ax.annotate ('MgII', х = (2000,0, 10,5), xycoords = 'данные')

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

И, если я указываю

ху = (2000,0, 9,999)

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

+0

@nordev Не уверено, что 'clip_on' не должно работать ... код аннотации немного привередлив (я думаю, что это было написано первым, то художник получил рефакторинг, и аннотация никогда не обновлялась) – tacaswell

ответ

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

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

Вы могли бы быть лучше использовать blended transform:

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

Эй, спасибо! (+1) Этот ответ пришел так быстро, что я не могу его принять (есть красное предупреждение, в котором говорится что-то вроде: вы можете принять ответ за 3 минуты). Мне нравится StackExchange. – Mephisto

+1

@Mephisto См. Править – tacaswell

+0

Я вижу. Спасибо, очень полезно, даже больше, чем первый вариант. – Mephisto

Смежные вопросы