Molte risposte "corrette" qui, ma ne aggiungerò un'altra poiché ritengo che alcuni dettagli siano lasciati fuori da molti. L'OP ha richiesto una rotazione di 90 gradi, ma cambierò a 45 gradi perché quando si utilizza un angolo diverso da zero o 90, è necessario modificare anche l'allineamento orizzontale; altrimenti le tue etichette saranno decentrate e un po 'fuorvianti (e sto indovinando molte persone che vengono qui vogliono ruotare gli assi su qualcosa di diverso da 90).
Il codice più semplice / minimo
opzione 1
plt.xticks(rotation=45, ha='right')
Come accennato in precedenza, ciò potrebbe non essere desiderabile se si preferisce adottare l'approccio orientato agli oggetti.
opzione 2
Un altro modo rapido (è destinato agli oggetti data ma sembra funzionare su qualsiasi etichetta; dubiti che questo sia raccomandato comunque):
fig.autofmt_xdate(rotation=45)
fig
di solito si ottiene da:
fig = plt.figure()
fig, ax = plt.subplots()
fig = ax.figure
Orientato agli oggetti / trattare direttamente con ax
Opzione 3a
Se hai l'elenco di etichette:
labels = ['One', 'Two', 'Three']
ax.set_xticklabels(labels, rotation=45, ha='right')
Opzione 3b
Se vuoi ottenere l'elenco delle etichette dalla trama corrente:
# Unfortunately you need to draw your figure first to assign the labels,
# otherwise get_xticklabels() will return empty strings.
plt.draw()
ax.set_xticklabels(ax.get_xticklabels(), rotation=45, ha='right')
Opzione 4
Simile a sopra, ma invece scorrere manualmente.
for label in ax.get_xticklabels():
label.set_rotation(45)
label.set_ha('right')
Opzione 5
Usiamo ancora pyplot
(as plt
) qui ma è orientato agli oggetti perché stiamo cambiando la proprietà di un ax
oggetto specifico .
plt.setp(ax.get_xticklabels(), rotation=45, ha='right')
Opzione 6
Questa opzione è semplice, ma AFAIK non è possibile impostare l'allineamento orizzontale dell'etichetta in questo modo, quindi un'altra opzione potrebbe essere migliore se l'angolo non è 90.
ax.tick_params(axis='x', labelrotation=45)
Modifica:
si parla di questo "bug" esatto e una correzione è potenzialmente prevista per v3.2.0
:
https://github.com/matplotlib/matplotlib/issues/13774
ha
(allineamento orizzontale)