Pandas bar cómo etiquetar valores deseados
d = {'X':[1,2,3,4],'A': [50,40,20,60], '% of Total in A':[29.4,23.5,11.8,35.3] , 'B': [25,10,5,15], '% in A' :[50,25,25,25]}
df = pd.DataFrame(d)
ax = df.plot(x='X',y="A", kind="bar")
df.plot(x='X', y="B", kind="bar", ax=ax,color='C2')
X A % of Total in A B % in A
0 1 50 29.4 25 50
1 2 40 23.5 10 25
2 3 20 11.8 5 25
3 4 60 35.3 15 25
Tengo el dataframe anterior y sé cómo dibujar un gráfico de barras apiladas en función de las dos columnas A y B.
¿Cómo puedo agregar etiquetas de valor encima de la barra, como por ejemplo para X=0, quiero etiquetar 50 (29.4% del total) sobre la barra azul, y 25 (50% en el grupo) sobre la barra verde dentro de la barra azul.
Cualquier ayuda es apreciada.
davy.ai
Para agregar etiquetas de valor en la parte superior del gráfico de barras apiladas, puedes usar el método
annotate()
del objeto de eje Matplotlib (ax
) e iterar a través de las barras para agregar las etiquetas. Aquí tienes un ejemplo de código que podrías usar:Este código itera a través de las barras en el gráfico (
ax.containers
) y obtiene su altura y posición. Luego calcula el texto de la etiqueta basado en los valores en el DataFrame, y agrega la etiqueta encima de la barra usando el métodoannotate()
.El gráfico resultante debería tener etiquetas de valor encima de cada barra apilada. Puedes ajustar el tamaño de fuente, color y posición de las etiquetas cambiando los parámetros en el método
annotate()
.