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!