Skip to content

add statistical annotations (pvalue significance) on an existing boxplot generated by seaborn boxplot

License

Notifications You must be signed in to change notification settings

ejc043/statannot

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Disclaimer

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.

What is it

Python package to optionnally compute statistical test and add statistical annotations on an existing boxplot/barplot generated by seaborn.

Features

  • 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.

Installation

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

Documentation

See example jupyter notebook example/example.ipynb.

Usage

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.

Examples

Example 1

Example 2

Requirements

  • Python >= 3.5
  • numpy >= 1.12.1
  • seaborn >= 0.8.1
  • matplotlib >= 2.2.2
  • pandas >= 0.23.0
  • scipy >= 1.1.0

Cite

A Digital Object Identifiers (DOIs) was created for the repository for easier referencing in the academic literature.

About

add statistical annotations (pvalue significance) on an existing boxplot generated by seaborn boxplot

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Jupyter Notebook 84.5%
  • Python 15.5%