Nota
Fare clic qui per scaricare il codice di esempio completo
Dimostrazione di rotazione del testo predefinita #
Il modo in cui Matplotlib esegue il layout del testo per impostazione predefinita è controintuitivo per alcuni, quindi questo esempio è progettato per renderlo un po' più chiaro.
Il testo è allineato dal riquadro di delimitazione (il riquadro rettangolare che circonda il rettangolo dell'inchiostro). L'ordine delle operazioni è la rotazione quindi l'allineamento. Fondamentalmente, il testo è centrato nella tua posizione (x, y), ruotato attorno a questo punto e quindi allineato in base al riquadro di delimitazione del testo ruotato.
Quindi, se specifichi l'allineamento in basso a sinistra, la parte inferiore sinistra del riquadro di delimitazione del testo ruotato sarà alla coordinata (x, y) del testo.
Ma un'immagine vale più di mille parole!
import matplotlib.pyplot as plt
import numpy as np
def addtext(ax, props):
ax.text(0.5, 0.5, 'text 0', props, rotation=0)
ax.text(1.5, 0.5, 'text 45', props, rotation=45)
ax.text(2.5, 0.5, 'text 135', props, rotation=135)
ax.text(3.5, 0.5, 'text 225', props, rotation=225)
ax.text(4.5, 0.5, 'text -45', props, rotation=-45)
for x in range(0, 5):
ax.scatter(x + 0.5, 0.5, color='r', alpha=0.5)
ax.set_yticks([0, .5, 1])
ax.set_xticks(np.arange(0, 5.1, 0.5))
ax.set_xlim(0, 5)
ax.grid(True)
# the text bounding box
bbox = {'fc': '0.8', 'pad': 0}
fig, axs = plt.subplots(2, 1, sharex=True)
addtext(axs[0], {'ha': 'center', 'va': 'center', 'bbox': bbox})
axs[0].set_ylabel('center / center')
addtext(axs[1], {'ha': 'left', 'va': 'bottom', 'bbox': bbox})
axs[1].set_ylabel('left / bottom')
plt.show()