2013-08-30 5 views
14

mio grafica va da y = -1 a y = 10Matlota, come scrivere annotazioni al di fuori del disegno in coords di dati?

Voglio scrivere un piccolo pezzo di testo in una posizione arbitraria, diciamo in x = 2000, y = 5:

ascia. annotare ('MgII', xy = (2000.0, 5.0), xycoords = 'dati')

Ora voglio lo stesso, ma questa volta il pezzo di testo deve essere al di fuori della grafica, ma nella posizione esatta Marchio in coordinate dati:

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

Ma poi scompare (ricordate il mio grafico va da -1 a 10). C'è molto spazio libero in cima alla grafica.

E, se a specificare

xy = (2000.0, 9,999)

quindi l'etichetta appare quasi dove voglio, solo che è troppo vicino al bordo superiore del quadro . Lo voglio a y = 10.5, in particolare.

+0

@nordev Non convinto che 'clip_on' non dovrebbe funzionare ... il codice di annotazione è un po 'schizzinoso (penso che sia ottenuto scritto prima, poi l'artista è stato rielaborato e l'annotazione non è mai stata aggiornata) – tacaswell

risposta

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

Per impostazione predefinita nelle unità di dati, l'annotazione viene disegnata solo se si trova in assi.

Si potrebbe essere meglio utilizzare un 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

Ehi, grazie mille! (+1) Questa risposta è arrivata così velocemente, che non posso ancora accettarlo (c'è un avvertimento rosso che dice qualcosa come: puoi accettare la risposta in 3 minuti). Adoro StackExchange. – Mephisto

+1

@Mephisto Vedi modifica – tacaswell

+0

Lo vedo. Grazie, molto utile, anche più della prima opzione. – Mephisto

Problemi correlati