Barchart con etichette verticali in pitone / matplotlib
-
10-07-2019 - |
Domanda
Sto usando matplotlib per generare un diagramma a barre (verticale). Il problema è che le mie etichette sono piuttosto lunghe. C'è un modo per visualizzarli in verticale, nella barra o sopra o sotto di essa?
Soluzione
Intendi qualcosa del genere:
>>> from matplotlib import *
>>> plot(xrange(10))
>>> yticks(xrange(10), rotation='vertical')
In generale, per mostrare qualsiasi testo in matplotlib con un orientamento verticale, puoi aggiungere la parola chiave rotation = 'vertical'
.
Per ulteriori opzioni, puoi consultare la guida (matplotlib.pyplot.text)
La funzione yticks traccia i segni di spunta sull'asse y; Non sono sicuro che tu abbia inizialmente inteso questa o la funzione ylabel, ma la procedura è sempre la stessa, devi aggiungere la rotazione = 'verticale'
Forse puoi anche trovare utili le opzioni 'allineamento verticale' e 'allineamento orizzontale', che ti consente di definire come allineare il testo rispetto ai segni di spunta o agli altri elementi.
Altri suggerimenti
In Jupyter Notebook potresti usare qualcosa del genere
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
plt.xticks(rotation='vertical')
plt.plot(np.random.randn(100).cumsum())
oppure puoi usare:
plt.xticks(rotation=90)
Suggerirei di guardare la galleria matplotlib . Almeno due degli esempi sembrano essere rilevanti:
- text_rotation.py per capire come funziona il layout del testo
- barchart_demo2.py , un esempio di un grafico a barre con un po 'più complicato layout rispetto all'esempio più semplice.
Dai un'occhiata a questo link: https://python-graph-gallery.com/7-custom-barplot -layout /
import matplotlib.pyplot as plt
heights = [10, 20, 15]
bars = ['A_long', 'B_long', 'C_long']
y_pos = range(len(bars))
plt.bar(y_pos, heights)
# Rotation of the bars names
plt.xticks(y_pos, bars, rotation=90)
Speriamo che sia d'aiuto.