TL'DR, i grafici a barre verticali sono mostrati in modo convenzionale - le cose si allineano da sinistra a destra. Tuttavia, quando viene convertito in un grafico a barre orizzontali (da bar
a barh
), tutto è capovolto. Ad esempio, per un grafico a barre raggruppato, non solo l'ordine della barra raggruppata è sbagliato, anche l'ordine di ogni gruppo è sbagliato.Matstotlib, il grafico a barre orizzontale (barh) è sottosopra
Per esempio, il grafico da http://dwheelerau.com/2014/05/28/pandas-data-analysis-new-zealanders-and-their-sheep/
Se si guarda da vicino, vi accorgerete che il il bar e la leggenda sono in ordine inverso - Manzo mostra in cima nella leggenda, ma in fondo in il grafo.
Come la demo più semplice, ho cambiato kind='bar',
-kind='barh',
da questo grafico https://plot.ly/pandas/bar-charts/#pandas-grouped-bar-chart e il risultato si presenta così: https://plot.ly/7/~xpt/
cioè le barre nel grafico a barre raggruppate orizzontale è ordinato a testa in giù.
Come ripararlo?
MODIFICA: @Ajean, in realtà non solo l'ordine della barra raggruppata è errato, anche l'ordine di ogni gruppo è sbagliato. Il grafico da Simple customization of matplotlib/pandas bar chart (labels, ticks, etc.) lo mostra chiaramente:
possiamo vedere che l'ordine è non convenzionale troppo, perché la gente si aspetterebbe il grafico sia top-down, con "AAA" in alto, non il fondo .
Se si esegue la ricerca di "Excel capovolta", le persone si lamentano di questo in Excel in tutti i luoghi. Microsoft Excel ha una correzione, Matplotlib/Panda/Searborn/Ploty/etc ha una soluzione per questo?
È possibile passare manualmente le maniglie in 'plt.legend' e ordinarle come si desidera. – DilithiumMatrix
Nah, il problema non è la leggenda, dai un'occhiata a https://plot.ly/7/~xpt/, A, B, C, D è nell'ordine corretto. È la barra che è nell'ordine sbagliato. – xpt
Hmmm .... Io non penso che questo sia un * bug * di per sé, tanto quanto un problema di convenzione. Le barre sono generalmente elencate in ordine crescente (vale a dire il primo elemento è "0", il secondo elemento è "1", ecc.). E nel caso qui esposto "bottom-up" ("up" significa "superiore"), ha senso che le prime barre si trovino in fondo a ciascun gruppo. Il problema è, penso, che la * convenzione * per una legenda sia "dall'alto in basso" piuttosto che "dal basso verso l'alto". Se vuoi davvero invertirlo, probabilmente cambiare la convenzione delle leggende sarebbe più facile. – Ajean