Maison >développement back-end >Tutoriel Python >Comment centrer les étiquettes de données dans les graphiques à barres empilées ?

Comment centrer les étiquettes de données dans les graphiques à barres empilées ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-16 10:20:03895parcourir

How to Center Data Labels in Stacked Bar Charts?

Graphique à barres empilées avec des étiquettes centrées

Problème :
Tentative de centrer les étiquettes de données dans une barre empilée Le graphique peut être difficile, car le simple fait de centrer les étiquettes peut ne pas donner des résultats parfaits.

Solution 1 : Plot à barres Pandas avec bar_label()

  • Utiliser les pandas .DataFrame.plot.bar() ou pandas.DataFrame.plot(kind='bar', stacked=True).
  • Utilisez la fonction matplotlib.pyplot.bar_label() pour centrer automatiquement les étiquettes dans le bars.

Solution 2 : Étiquetage explicite avec des propriétés de rectangle

  • Accédez aux objets matplotlib.patches.Rectangle pour chaque section à l'aide de ax.patches.
  • Calculez la hauteur, la largeur, la coordonnée x et la coordonnée y pour chaque rectangle.
  • Créez une étiquette à l'aide de chaînes f, y compris du texte supplémentaire si vous le souhaitez.
  • Tracez les étiquettes à l'aide de ax.text(), en les alignant au centre des rectangles correspondants.

Solution 3 : Seaborn Histplot

  • Convertir la trame de données sous une forme longue en utilisant pandas.melt().
  • Tracé en utilisant seaborn.histplot() ou seaborn.displot() avec les paramètres multiple='stack' et discrete=True.
  • Accédez aux correctifs à l'aide de ax.containers et procédez à la création et au placement des étiquettes comme dans la solution 2.

Notes de solution :

  • Personnalisez les étiquettes pour petits segments en utilisant ax.bar_label(c, labels=labels, label_type='center'), où labels est une liste d'étiquettes correspondant à chaque rectangle.
  • Utilisez fmt=lambda x: f'{x: .0f}' pour afficher les nombres sans décimales dans la solution 1.
  • Pour les barres empilées horizontales, utilisez kind='barh' dans pandas.plot() et modifiez le calcul de l'étiquette en conséquence.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn