TL'DR, die vertikalen Balkendiagramme werden in einer konventionellen Weise gezeigt - Dinge richten sich von links nach rechts. Wenn es jedoch in ein horizontales Balkendiagramm konvertiert wird (von bar
bis barh
), steht alles auf dem Kopf. Das heißt, für ein gruppiertes Balkendiagramm ist nicht nur die Reihenfolge der gruppierten Balken falsch, sondern auch die Reihenfolge der einzelnen Gruppen.Matplotlib, horizontales Balkendiagramm (Barh) ist auf dem Kopf stehend
Für zB die grafische Darstellung von http://dwheelerau.com/2014/05/28/pandas-data-analysis-new-zealanders-and-their-sheep/
Wenn Sie genau hinsehen, werden Sie feststellen, dass die in der Bar und Legende in umgekehrter Reihenfolge sind - Rindfleisch zeigt oben in der Legende, sondern auf der Unterseite in der Graph.
Als einfachste Demo, änderte ich kind='bar',
-kind='barh',
aus dieser graphischen Darstellung https://plot.ly/pandas/bar-charts/#pandas-grouped-bar-chart und das Ergebnis sieht wie folgt aus: https://plot.ly/7/~xpt/
das heißt, die Bars in der horizontalen gruppierte Balkendiagramm bestellt den Kopf.
Wie es zu beheben?
EDIT: @Ajean, es ist eigentlich nicht nur die Reihenfolge der gruppierten bar falsch ist, die Reihenfolge der einzelnen Gruppen falsch als gut. Die Grafik von Simple customization of matplotlib/pandas bar chart (labels, ticks, etc.) zeigt es deutlich:
Wir können sehen, dass der Auftrag zu unkonventionell ist, weil die Menschen die Grafik erwarten top-down, mit „AAA“ an der Spitze zu sein, nicht der Boden .
Wenn Sie nach "Excel upside-down" suchen, werden Sie feststellen, dass sich die Leute überall in Excel über dieses Problem beschweren. Das Microsoft Excel hat eine Lösung dafür, hat Matplotlib/Panda/Searborn/Ploty/etc eine Lösung dafür?
Sie könnten die Balkengriffe manuell in 'plt.legend' übergeben und sie so bestellen, wie Sie wollen. – DilithiumMatrix
Nein, das Problem ist nicht die Legende, werfen Sie einen Blick auf https://plot.ly/7/~xpt/, A, B, C, D ist in der richtigen Reihenfolge. Es ist die Bar in der falschen Reihenfolge. – xpt
Hmmm .... Ich glaube nicht, dass dies ein * Fehler * an sich ist, so viel wie ein Konventionsproblem. Die Balken sind typischerweise in aufsteigender Reihenfolge aufgelistet (d. H. Das erste Element ist "0", das zweite Element ist "1" usw.). Und in dem hier angezeigten Fall, der "von unten nach oben" ("oben" bedeutet "höher") ist, macht es Sinn, dass die ersten Balken am unteren Ende jeder Gruppe liegen. Das Problem ist, glaube ich, dass die * Konvention * für eine Legende "top-down" statt "bottom-up" ist. Wenn Sie es wirklich umkehren möchten, ist es wahrscheinlich am einfachsten, die Legendenkonvention zu ändern. – Ajean