2014-12-27 8 views
29

Sto creando grafici molto semplici con il modulo Python matplotlib/pylab. La lettera "y" che identifica l'asse Y è dalla sua parte. Ci si aspetterebbe questo se l'etichetta fosse più lunga, ad esempio una parola, in modo da non estendere troppo l'esterno del grafico a sinistra. Ma per un'etichetta a una sola lettera, questo non ha senso, l'etichetta dovrebbe essere verticale. Le mie ricerche sono risultate vuote. Come posso stampare "y" orizzontalmente?Come stampare l'etichetta dell'asse Y orizzontalmente in una tabella matplotlib/pylab?

risposta

50

È molto semplice. Dopo aver tracciato l'etichetta, si può semplicemente cambiare la rotazione:

from matplotlib import pyplot as plt 
plt.ion() 
plt.plot([1,2,3]) 
h = plt.ylabel('y') 
h.set_rotation(0) 
plt.draw() 

In alternativa, si può passare la rotazione come argomento, vale a dire

plt.ylabel('y',rotation=0) 
+0

Ottimo, questo è il lavoro. Grazie! –

+9

In una nota a margine, è possibile passare la rotazione direttamente in 'plt.ylabel'. (ad es. 'plt.ylabel ('y', rotation = 0)') –

+0

Hey è elegante. Grazie, Joe. –

19

Ampliando la risposta accettata, quando lavoriamo con una particolare assi oggetto ax:

ax.set_ylabel('abc', rotation=0, fontsize=20, labelpad=20) 

noti che spesso sarà necessario regolare manualmente anche il labelpad - altrimenti la "abc" si intrud e sulla trama.

Da brevi esperimenti immagino che lo labelpad sia lo scostamento tra il riquadro di delimitazione delle etichette di graduazione e il centro dell'etichetta y. (Quindi, non proprio il padding che il nome implica, sarebbe stato più intuitivo se questo fosse il divario rispetto alla bounding box dell'etichetta.)

+9

per una maggiore chiarezza che potresti considerare 'rotazione = 'orizzontale''. Inoltre, invece di scegliere un 'labelpad' arbitrario (e quindi dover regolare in base ai risultati), è possibile aggiungere l'argomento 'ha = 'right'', dove' ha' è una comoda abbreviazione per la parola chiave 'horizontalalignment'. – NauticalMile

Problemi correlati