2013-08-30 13 views
14

Moja graficzny przechodzi od y = -1 y = 10Matplotlib, jak pisać adnotacje poza rysunkiem w współrzędnych danych?

Chcę napisać kawałek tekstu w dowolnej pozycji, powiedzmy w punkcie x = 2000, y = 5:

topór. opisywanie („MgII” xy = (2000,0, 5,0), xycoords = „dane”)

teraz chcę to samo, ale tym razem fragment tekstu musi być poza grafiką, ale w dokładnym położeniu Oznaczam we współrzędnych danych:

ax.annotate ('MgII' xy = (2000,0, 10,5), xycoords = 'dane')

Ale potem zniknie (pamiętaj mojej grafiki idzie od -1 do 10). Na grafice jest dużo wolnego miejsca.

A jeśli mogę określić

xy = (2000,0, 9,999)

następnie pojawi się etykieta prawie gdzie chcesz, tylko to jest zbyt blisko górnej granicy obrazu . Chcę tego na y = 10.5, konkretnie.

+0

@nordev Nie przekonany, że 'clip_on' nie powinno działać ... kod adnotacji jest nieco wybredny (myślę, że został napisany, potem artysta został ponownie przeanalizowany, a adnotacja nigdy nie została zaktualizowana) – tacaswell

Odpowiedz

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

Domyślnie w jednostkach danych adnotacja jest rysowana tylko wtedy, gdy jest w osiach.

może być lepiej wyłączyć za pomocą 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

Hej, bardzo dziękuję! (+1) Ta odpowiedź była tak szybka, że ​​nie mogę jej jeszcze zaakceptować (jest czerwone ostrzeżenie, które mówi coś w stylu: możesz zaakceptować odpowiedź za 3 minuty). Uwielbiam StackExchange. – Mephisto

+1

@Mephisto Patrz edytuj – tacaswell

+0

Widzę to. Dzięki, bardzo przydatne, nawet bardziej niż pierwsza opcja. – Mephisto

Powiązane problemy