Barchart mit vertikalen Etiketten in Python / matplotlib
-
10-07-2019 - |
Frage
Ich bin mit matplotlib ein (vertikal) barchart zu erzeugen. Das Problem ist meine Etiketten sind ziemlich lang. Gibt es eine Möglichkeit, sie vertikal angezeigt werden, entweder in der Bar oder darüber oder darunter?
Lösung
Wollen Sie so etwas wie folgt aus:
>>> from matplotlib import *
>>> plot(xrange(10))
>>> yticks(xrange(10), rotation='vertical')
Im Allgemeinen zeigen einen beliebigen Text in matplotlib mit einer vertikalen Ausrichtung, das Schlüsselwort rotation='vertical'
hinzufügen können.
Für weitere Optionen, Sie Hilfe suchen können (matplotlib.pyplot.text)
Die yticks Funktion zeichnet die Zecken auf der y-Achse; Ich bin nicht sicher, ob Sie ursprünglich das oder die ylabel Funktion gemeint, aber das Verfahren ist alwasy die gleiche, müssen Sie Rotation hinzufügen = ‚vertikale‘
Vielleicht können Sie auch nützlich, die Optionen ‚Vertical‘ und ‚Horizontal‘ finden, die Sie definieren können, wie der Text in Bezug auf die Zecken oder die anderen Elemente auszurichten.
Andere Tipps
In Jupyter Notebook können Sie so etwas wie dieses verwenden
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
plt.xticks(rotation='vertical')
plt.plot(np.random.randn(100).cumsum())
oder Sie verwenden können:
plt.xticks(rotation=90)
Ich würde vorschlagen, unter der matplotlib Galerie suchen. Mindestens zwei der Beispiele scheinen relevant zu sein:
- text_rotation.py für das Verständnis, wie Text-Layout funktioniert
- barchart_demo2.py , ein Beispiel für ein Balkendiagramm mit etwas komplizierter Layout als das grundlegendste Beispiel.
Bitte lesen Sie in diesem 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)
Wir hoffen, es hilft.