Usa annotate
.
In effetti, non uso quasi mai text
. Anche quando voglio posizionare le cose in coordinate di dati, di solito voglio compensarlo con una certa distanza fissa in punti, che è molto più semplice con annotate
.
Come un rapido esempio:
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, subplot_kw=dict(aspect=1))
axes[0].plot(range(1, 4))
axes[1].plot(range(10, 40, 10), range(1, 4))
for ax in axes:
ax.annotate('Test', xy=(1, 0), xycoords='axes fraction', fontsize=16,
horizontalalignment='right', verticalalignment='bottom')
plt.show()
Se vuoi leggermente compensato da un angolo, è possibile specificare un offset attraverso il xytext
kwarg (e textcoords
per controllare come i valori di xytext
sono interpretati). Sto anche utilizzando i ha
e va
abbreviazioni per horizontalalignment
e verticalalignment
qui:
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, subplot_kw=dict(aspect=1))
axes[0].plot(range(1, 4))
axes[1].plot(range(10, 40, 10), range(1, 4))
for ax in axes:
ax.annotate('Test', xy=(1, 0), xycoords='axes fraction', fontsize=16,
xytext=(-5, 5), textcoords='offset points',
ha='right', va='bottom')
plt.show()
Se stai cercando di posizionarlo sotto gli assi, è possibile utilizzare l'offset per posizionarlo un set distanze indicate ai punti:
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, subplot_kw=dict(aspect=1))
axes[0].plot(range(1, 4))
axes[1].plot(range(10, 40, 10), range(1, 4))
for ax in axes:
ax.annotate('Test', xy=(1, 0), xycoords='axes fraction', fontsize=16,
xytext=(0, -15), textcoords='offset points',
ha='right', va='top')
plt.show()
Dai un'occhiata anche allo Matplotlib annotation guide per maggiori informazioni.
Questa è un'ottima risposta ed esempi. Proverò ad usare annotate invece di testo. Grazie mille. – Tetsuro
Ottima risposta! Grazie! – HyperCube