zorder outside examples example distplot python-3.x matplotlib statistics seaborn

python-3.x - outside - seaborn vs matplotlib



¿Cómo se insertan las anotaciones estadísticas(estrellas o valores p) en las parcelas matplotlib/seaborn? (2)

Aquí cómo agregar una anotación estadística a un diagrama de caja de Seaborn:

import seaborn as sns, matplotlib.pyplot as plt tips = sns.load_dataset("tips") sns.boxplot(x="day", y="total_bill", data=tips, palette="PRGn") # statistical annotation x1, x2 = 2, 3 # columns ''Sat'' and ''Sun'' (first column: 0, see plt.xticks()) y, h, col = tips[''total_bill''].max() + 2, 2, ''k'' plt.plot([x1, x1, x2, x2], [y, y+h, y+h, y], lw=1.5, c=col) plt.text((x1+x2)*.5, y+h, "ns", ha=''center'', va=''bottom'', color=col) plt.show()

Y aquí el resultado:

Esto parece una pregunta trivial, pero he estado buscando por un tiempo y parece que no puedo encontrar una respuesta. También parece algo que debería ser una parte estándar de estos paquetes. ¿Alguien sabe si hay una forma estándar de incluir anotaciones estadísticas entre parcelas de distribución en marinos?

Por ejemplo, ¿entre dos cajas o swarmplots?


Uno también puede estar interesado en agregar varias anotaciones a diferentes pares de cajas. En tal caso, podría ser útil manejar la colocación de las diferentes líneas y textos en el eje y automáticamente. Escribí una pequeña función para manejar estos casos (ver el repositorio de Github ), que apila correctamente las líneas una encima de la otra sin superposición. Las anotaciones pueden estar dentro o fuera de la trama. Aquí hay un ejemplo mínimo.

import matplotlib.pyplot as plt import seaborn as sns from statannot import add_statistical_test_annotation sns.set(style="whitegrid") df = sns.load_dataset("tips") ax = sns.boxplot(x="day", y="total_bill", data=df) add_statistical_test_annotation(ax, df, [("Thur", "Fri"), ("Thur", "Sat"), ("Fri", "Sun")], test=''Mann-Whitney'', order=None, textFormat=''star'', loc=''outside'', verbose=2)

ax = sns.boxplot(x="day", y="total_bill", data=df) add_statistical_test_annotation(ax, df, [("Thur", "Fri"), ("Thur", "Sat"), ("Fri", "Sun")], test=''t-test'', order=None, textFormat=''full'', loc=''inside'', verbose=2)