web-dev-qa-db-fra.com

Diagramme à barres avec étiquettes verticales en python / matplotlib

J'utilise matplotlib pour générer un graphique à barres (vertical). Le problème est que mes étiquettes sont assez longues. Existe-t-il un moyen de les afficher verticalement, soit dans la barre, soit au-dessus ou en dessous?

53
phihag

Voulez-vous dire quelque chose comme ça:

>>> from matplotlib import *
>>> plot(xrange(10))
>>> yticks(xrange(10), rotation='vertical')

?

En général, pour afficher tout texte dans matplotlib avec une orientation verticale, vous pouvez ajouter le mot clé rotation='vertical'.

Pour d'autres options, vous pouvez consulter l'aide (matplotlib.pyplot.text)

La fonction yticks trace les graduations sur l'axe y; Je ne sais pas si vous vouliez dire à l'origine cela ou la fonction ylabel, mais la procédure est toujours la même, vous devez ajouter rotation = 'vertical'

Peut-être pouvez-vous également trouver utiles les options "alignement vertical" et "alignement horizontal", qui vous permettent de définir comment aligner le texte par rapport aux graduations ou aux autres éléments.

75
dalloliogm

Dans Jupyter Notebook, vous pourriez utiliser quelque chose comme ça

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

plt.xticks(rotation='vertical')
plt.plot(np.random.randn(100).cumsum())

ou vous pouvez utiliser:

plt.xticks(rotation=90)
15
Vlad Bezden

Je suggère de regarder la galerie matplotlib . Au moins deux des exemples semblent pertinents:

  • text_rotation.py pour comprendre le fonctionnement de la mise en page du texte
  • barchart_demo2.py , un exemple de graphique à barres avec une disposition un peu plus compliquée que l'exemple le plus basique.
5
Jouni K. Seppänen

Veuillez consulter ce lien: 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)

Le résultat sera comme ceci enter image description here

Espérons que cela aide.

4
Yunzhao Xing