This repository is not maintained anymore. I recommend using the forked package trevismd/statannotations, which has a cleaner API and further extends the functionalities of statannot
.
Python package to optionnally compute statistical test and add statistical annotations on an existing boxplot/barplot generated by seaborn.
- Single function to add statistical annotations on an existing boxplot/barplot generated by seaborn boxplot.
- Integrated statistical tests (binding to
scipy.stats
methods):- Mann-Whitney
- t-test (independent and paired)
- Welch's t-test
- Levene test
- Wilcoxon test
- Kruskal-Wallis test
- Smart layout of multiple annotations with correct y offsets.
- Annotations can be located inside or outside the plot.
- Format of the statistical test annotation can be customized: star annotation, simplified p-value, or explicit p-value.
- Optionally, custom p-values can be given as input. In this case, no statistical test is performed.
The latest stable release can be installed from PyPI:
pip install statannot
You may instead want to use the development version from Github:
pip install git+https://github.com/webermarcolivier/statannot.git
See example jupyter notebook example/example.ipynb
.
Here is a minimal example:
import seaborn as sns
from statannot import add_stat_annotation
df = sns.load_dataset("tips")
x = "day"
y = "total_bill"
order = ['Sun', 'Thur', 'Fri', 'Sat']
ax = sns.boxplot(data=df, x=x, y=y, order=order)
test_results = add_stat_annotation(ax, data=df, x=x, y=y, order=order,
box_pairs=[("Thur", "Fri"), ("Thur", "Sat"), ("Fri", "Sun")],
test='Mann-Whitney', text_format='star',
loc='outside', verbose=2)
test_results
More examples are available in the jupyter notebook example/example.ipynb
.
- Python >= 3.5
- numpy >= 1.12.1
- seaborn >= 0.8.1
- matplotlib >= 2.2.2
- pandas >= 0.23.0
- scipy >= 1.1.0