matplotlib
Sistemi di coordinate
Ricerca…
Osservazioni
Matplotlib ha quattro distinti sistemi di coordinate che possono essere sfruttati per facilitare il posizionamento di oggetti diversi, ad esempio il testo. Ogni sistema ha un oggetto di trasformazione corrispondente che trasforma le coordinate da quel sistema al cosiddetto sistema di coordinate di visualizzazione.
Il sistema di coordinate di dati è il sistema definito dai dati sui rispettivi assi. È utile quando si tenta di posizionare un oggetto rispetto ai dati tracciati. L'intervallo è dato dalle proprietà xlim
e ylim
degli Axes
. L'oggetto di trasformazione corrispondente è ax.transData
.
Il sistema di coordinate degli assi è il sistema legato al suo oggetto Axes
. I punti (0, 0) e (1, 1) definiscono gli angoli in basso a sinistra e in alto a destra degli assi. Come tale è utile quando si posiziona rispetto agli assi, come in alto al centro del grafico. L'oggetto di trasformazione corrispondente è ax.transAxes
.
Il sistema di coordinate della figura è analogo al sistema di coordinate degli assi, tranne per il fatto che è legato alla Figure
. I punti (0, 0) e (1, 1) rappresentano gli angoli in basso a sinistra e in alto a destra della figura. È utile quando si tenta di posizionare qualcosa rispetto all'intera immagine. Il suo oggetto di trasformazione corrispondente è fig.transFigure
.
Il sistema di coordinate di visualizzazione è il sistema dell'immagine espressa in pixel. Punti (0, 0) e (larghezza, altezza) sono i pixel in basso a sinistra e in alto a destra dell'immagine o del display. Può essere usato per posizionarsi in modo assoluto. Poiché gli oggetti di trasformazione trasformano le coordinate in questo sistema di coordinate, il sistema di visualizzazione non ha alcun oggetto di trasformazione ad esso associato. Tuttavia, se necessario, è possibile utilizzare None
o matplotlib.transforms.IdentityTransform()
.
Maggiori dettagli sono disponibili qui .
Coordinare sistemi e testo
I sistemi di coordinate di Matplotlib sono molto utili quando si tenta di annotare le trame che si fanno. A volte ti piacerebbe posizionare il testo relativamente ai tuoi dati, come quando cerchi di etichettare un punto specifico. Altre volte vorresti aggiungere un testo in cima alla figura. Questo può essere facilmente ottenuto selezionando un sistema di coordinate appropriato passando un oggetto di transform
parametro di transform
in call to text()
.
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([2.], [3.], 'bo')
plt.text( # position text relative to data
2., 3., 'important point', # x, y, text,
ha='center', va='bottom', # text alignment,
transform=ax.transData # coordinate system transformation
)
plt.text( # position text relative to Axes
1.0, 1.0, 'axes corner',
ha='right', va='top',
transform=ax.transAxes
)
plt.text( # position text relative to Figure
0.0, 1.0, 'figure corner',
ha='left', va='top',
transform=fig.transFigure
)
plt.text( # position text absolutely at specific pixel on image
200, 300, 'pixel (200, 300)',
ha='center', va='center',
transform=None
)
plt.show()