Matplotlib, horizontal-bar-chart (barh) ist, der upside-down

TL'DR, die vertikale Balkendiagramme angezeigt, die in einem konventionellen Weg-Sachen line-up von Links nach rechts. Allerdings, wenn es konvertiert wird, die horizontal-bar-chart (aus bar zu barh), alles auf dem Kopf steht. I. e., für ein gruppiertes Balkendiagramm, nicht nur die Reihenfolge der gruppierten bar ist falsch, die Reihenfolge der einzelnen Gruppen ist auch schief.

Z.B., dass der graph von http://dwheelerau.com/2014/05/28/pandas-data-analysis-new-zealanders-and-their-sheep/

Matplotlib, horizontal-bar-chart (barh) ist, der upside-down

Wenn Sie genau hinsehen, werden Sie feststellen, dass die bar und die Legende in umgekehrter Reihenfolge -- Rindfleisch zeigt auf der Oberseite in der Legende, aber unten in der Grafik.

Als die einfachste demo, die ich geändert habe kind='bar', zu kind='barh',
aus diesem graph
https://plot.ly/pandas/bar-charts/#pandas-grouped-bar-chart
und das Ergebnis sieht wie folgt aus:
https://plot.ly/7/~xpt/

I. e., die Balken der horizontal gruppierte Balkendiagramm ist bestellt, upside-down.

Wie es zu lösen ist?

EDIT: @Ajean, es ist eigentlich nicht nur die Reihenfolge der gruppierten bar ist falsch, die Reihenfolge der einzelnen Gruppen ist auch schief. Der graph von Einfache Anpassung von matplotlib/pandas Balkendiagramm (labels, ticks, etc.) zeigt es deutlich:

Matplotlib, horizontal-bar-chart (barh) ist, der upside-down

Können wir sehen, dass die Reihenfolge ist unkonventionell auch, denn die Leute würden erwarten, dass die Graphen von oben nach unten mit "AAA" an der Spitze, nicht unten.

Wenn Sie die Suche nach "Excel-upside-down -", Sie finden die Leute beschweren sich über diese in Excel alle über dem Orte. Microsoft Excel hat eine Lösung für Sie, tun Matplotlib/Panda/Searborn/Ploty/etc hat ein Update für Sie?

  • Sie könnte passieren die bar Griffe in plt.legend manuell, und ordnen Sie diese wie Sie wollen.
  • Nee, das problem ist nicht die Legende, werfen Sie einen Blick auf Grundstück.ly/7/~xpt, A, B, C, D ist in der richtigen Reihenfolge. Es ist die bar, die sind in der falschen Reihenfolge.
  • Hmmm .... Ich glaube nicht, dass dies ein Fehler per se, als viel als ein übereinkommen Problem. Die bars sind in der Regel aufgeführt, die in aufsteigender Reihenfolge (d.h. das erste element "0" ist, das zweite element ist "1", usw.). Und in dem Fall hier, dass "bottom-up" ("oben" heißt "höher"), macht es Sinn, dass die ersten Takte werden am Ende jeder Gruppe. Das Problem ist, denke ich, dass das übereinkommen für eine Legende ist "top-down" statt "bottom-up". Wenn Sie wirklich wollen, um es rückgängig zu machen, wahrscheinlich das ändern der Legende convention wäre das einfachste.
InformationsquelleAutor xpt | 2015-12-03
Schreibe einen Kommentar