Anotando axvline en matplotlib.
Estoy dibujando algunos números de mis dataframes de pandas df1
y df2
utilizando seaborn y subplots, y me gustaría agregar una línea anotada mostrando el valor mediano para una columna de cada dataframe en los subplots.
Puedo dibujar una línea en la mediana utilizando axvline
en el siguiente código, pero no estoy seguro de cómo anotar la línea dibujada para mostrar el valor mediano real:
df1median = df1['values'].median()
df2median = df2['values'].median()
fig, axes = plt.subplots(1,2)
sns.kdeplot(data=df1, x='values', ax=axes[0])
axes[0].axvline(df1median)
sns.kdeplot(data=df2, x='values', ax=axes[1])
axes[1].axvline(df2median)
Puedo anotar manualmente usando plt.text
y configurando la posición manualmente, pero me gustaría encontrar una manera de anotar la línea dibujada en cada subplot directamente. ¿Es esto posible?
davy.ai
Sí, es posible anotar la línea vertical dibujada directamente en cada subtrama. Puedes usar el método
ax.annotate
para añadir la anotación al gráfico. Así es cómo puedes modificar tu código para añadir las anotaciones:En este código,
axes[0].annotate
yaxes[1].annotate
se usan para añadir las anotaciones a la primera y segunda subtrama, respectivamente. El argumentoxy
especifica la ubicación del punto que deseas anotar (en este caso, el valor de la mediana), yxytext
especifica la ubicación del texto de la anotación. El argumentoarrowprops
se usa para dibujar una flecha que apunta desde el texto de la anotación hasta el punto de anotación.Ten en cuenta que se utiliza
f'Mediana: {df1median:.2f}'
yf'Mediana: {df2median:.2f}'
para dar formato al texto de la anotación y mostrar el valor de la mediana con dos decimales.