Skip to content

zblz/corner.py

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

corner.py

Make some beautiful corner plots.

Corner plot /ˈkôrnər plät/ (noun):
An illustrative representation of different projections of samples in high dimensional spaces. It is awesome. I promise.

Built by Dan Foreman-Mackey and collaborators (see corner.__contributors__ for the most up to date list). Licensed under the 2-clause BSD license (see LICENSE).

Installation

Just run

pip install corner

to get the most recent stable version.

Usage

The main entry point is the corner.corner function. You'll just use it like this:

import numpy as np
import corner

ndim, nsamples = 5, 10000
samples = np.random.randn(ndim * nsamples).reshape([nsamples, ndim])
figure = corner.corner(samples)
figure.savefig("corner.png")

With some other tweaks (see demo.py) you can get something that looks awesome like:

https://raw.github.com/dfm/corner.py/master/corner.png

By default, data points are shown as grayscale points with contours. Contours are shown at 0.5, 1, 1.5, and 2 sigma.

For more usage examples, take a look at tests.py.

Documentation

All the options are documented in the docstrings for the corner and hist2d functions. These can be viewed in a Python shell using:

import corner
print(corner.corner.__doc__)

or, in IPython using:

import corner
corner.corner?

A note about "sigmas"

We are regularly asked about the "sigma" levels in the 2D histograms. These are not the 68%, etc. values that we're used to for 1D distributions. In two dimensions, a Gaussian density is given by:

pdf(r) = exp(-(r/s)^2/2) / (2*pi*s^2)

The integral under this density is:

cdf(x) = Integral(r * exp(-(r/s)^2/2) / s^2, {r, 0, x})
       = 1 - exp(-(x/s)^2/2)

This means that within "1-sigma", the Gaussian contains 1-exp(-0.5) ~ 0.393 or 39.3% of the volume. Therefore the relevant 1-sigma levels for a 2D histogram of samples is 39% not 68%. If you must use 68% of the mass, use the levels keyword argument.

The "sigma-demo" notebook visually demonstrates the difference between these choices of levels.

Attribution

https://zenodo.org/badge/doi/10.5281/zenodo.11020.png

If you make use of this code, please cite it.

License

Copyright 2013, 2014 Dan Foreman-Mackey

corner.py is free software made available under the BSD License. For details see the LICENSE file.

About

Make some beautiful corner plots.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Jupyter Notebook 92.4%
  • Python 7.6%