Maison >développement back-end >Tutoriel Python >Comment annoter efficacement les tracés à barres Pandas avec des valeurs de données ?

Comment annoter efficacement les tracés à barres Pandas avec des valeurs de données ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-07 19:35:111002parcourir

How to Efficiently Annotate Pandas Bar Plots with Data Values?

Annotation des tracés à barres Pandas avec des valeurs de données

Lorsque vous travaillez avec des tracés à barres Pandas, il est souvent souhaitable d'afficher les valeurs numériques qu'ils représentent. Cet article aborde le problème de l'annotation des barres avec des valeurs de données arrondies du DataFrame.

Problème :

Considérez le DataFrame (df) suivant :

                 A         B
  value1  0.440922  0.911800
  value2  0.588242  0.797366

Le but est d'annoter chaque barre avec la valeur arrondie correspondante, comme illustré dans l'image ci-dessous :

[Image d'un graphique à barres avec des valeurs annotées]

Approche inefficace :

Une approche courante de l'annotation consiste à utiliser la fonction annoter . Cependant, comme le démontre l'exemple de code ci-dessous, cette approche positionne les annotations centrées sur les x-tics :

ax = df.plot(kind='bar')
for idx, label in enumerate(list(df.index)):
    for acc in df.columns:
        value = np.round(df.ix[idx][acc], decimals=2)
        ax.annotate(value,
            (idx, value),
            xytext=(0, 15),
            textcoords='offset points')

Solution optimale :

Une solution plus efficace consiste à obtenir les données des patchs des axes :

for p in ax.patches:
    ax.annotate(str(p.get_height()), (p.get_x() * 1.005, p.get_height() * 1.005))

Ce code extrait la hauteur de la barre et positionne l'annotation légèrement au-dessus de la barre pour la centrer it.

Personnalisation :

Pour personnaliser l'annotation, on peut ajuster le formatage et les décalages de la chaîne. Par exemple :

for p in ax.patches:
    ax.annotate("{:.2f}".format(p.get_height()), (p.get_x() + p.get_width() / 2, p.get_height() * 1.005))

Cela centre l'annotation sur chaque barre et formate la hauteur à deux décimales.

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