1. En la versión anterior de matplotlib, solo puede agregar valores al histograma uno por uno a través de plt.text.La función plt.bar_label() se agrega en la nueva versión posterior, que se puede etiquetar de manera conveniente y rápida. El método es como sigue:
bar1 = plt.bar([1,2,3],[2,5,9])
plt.bar_label(bar1)
Pero si quieres operar a seaborn:
bar2 = sns.barplot([1,2,3],[2,3,4])
plt.bar_label(bar2)
La operación anterior informa un error que muestra que el objeto no tiene el atributo datavalues. Se supone que el objeto pasado a plt.bar_label es incorrecto. Explore los objetos devueltos por plt.bar y sns.barplot:
Se puede ver que los dos objetos son inconsistentes Se puede ver que la entrada de plt.bar_label debe ser el objeto BarContainer, y el retorno de sns.barplot es el objeto AxesSubplot.
La forma correcta es la siguiente: elimine el atributo de contenedores de AxesSubplot, obtenga el iterador del objeto contenedor, atraviéselo o elimine el objeto contenedor por separado y páselo a plt.bar_label.
bar2 = sns.barplot([1,2,3],[2,3,4])
plt.bar_label(bar2.containers[0])