GetDist Jupyter Notebook Plot Gallery

Demonstrates the types of plot you can make with GetDist and how to make them. You can also run this notebook online.

In [1]:
#Show plots inline, and load main getdist plot module and samples class
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
from __future__ import print_function
import sys, os
from getdist import plots, MCSamples
import getdist, IPython
import pylab as plt
print('GetDist Version: %s, Matplotlib version: %s'%(getdist.__version__, plt.matplotlib.__version__))
#matplotlib 2 doesn't seem to work well without usetex on
GetDist Version: 0.3.3, Matplotlib version: 2.1.2
In [2]:
#Get some random samples for demonstration:
#make random covariance, then independent samples from Gaussian
import numpy as np
ndim = 4
nsamp = 10000
A = np.random.rand(ndim,ndim)
cov =, A.T)
samps = np.random.multivariate_normal([0]*ndim, cov, size=nsamp)
A = np.random.rand(ndim,ndim)
cov =, A.T)
samps2 = np.random.multivariate_normal([0]*ndim, cov, size=nsamp)
In [3]:
#Get the getdist MCSamples objects for the samples, specifying same parameter
#names and labels; if not specified weights are assumed to all be unity
names = ["x%s"%i for i in range(ndim)]
labels =  ["x_%s"%i for i in range(ndim)]
samples = MCSamples(samples=samps,names = names, labels = labels)
samples2 = MCSamples(samples=samps2,names = names, labels = labels, label='Second set')
Removed no burn in
Removed no burn in
In [4]:
#Triangle plot
g = plots.getSubplotPlotter()
g.triangle_plot([samples, samples2], filled=True)
In [5]:
#Here we are using inline plots, but if you wanted to export to file you'd just do e.g.
In [6]:
#1D marginalized plot
g = plots.getSinglePlotter(width_inch=4)
g.plot_1d(samples, 'x2')
In [7]:
#1D marginalized comparison plot
g = plots.getSinglePlotter(width_inch=3)
g.plot_1d([samples, samples2], 'x1')
In [8]:
#1D normalized comparison plot
g = plots.getSinglePlotter(width_inch=4)
g.plot_1d([samples, samples2], 'x1', normalized=True)
In [9]:
#2D line contour comparison plot with extra bands and markers
g = plots.getSinglePlotter()
g.plot_2d([samples, samples2], 'x1', 'x2')
g.add_y_bands(0, 1)
In [10]:
#Filled 2D comparison plot with legend
g = plots.getSinglePlotter(width_inch=4, ratio=1)
g.plot_2d([samples, samples2], 'x1', 'x2', filled=True)
g.add_legend(['sim 1', 'sim 2'], colored_text=True);
In [11]:
#Shaded 2D comparison plot
g = plots.getSinglePlotter(width_inch=4)
g.plot_2d([samples, samples2], 'x1', 'x2', shaded=True);
In [12]:
#Customized 2D filled comparison plot
g = plots.getSinglePlotter(width_inch=6, ratio=3 / 5.)
g.settings.legend_fontsize = 10
g.plot_2d([samples, samples2], 'x1', 'x2', filled=True, 
    colors=['green', ('#F7BAA6', '#E03424')], lims=[-4, 7, -5, 5])
g.add_legend(['Sim ', 'Sim 2'], legend_loc='upper right');
In [13]:
#Change the contours levels for marge stats and plots
#(note you need a lot of samples for 99% confidence contours to be accurate)
g = plots.getSinglePlotter()
samples.updateSettings({'contours': [0.68, 0.95, 0.99]})
g.settings.num_plot_contours = 3
g.plot_2d(samples, 'x1', 'x2');
In [14]:
#2D scatter (3D) plot
g = plots.getSinglePlotter(width_inch=5)
g.plot_3d(samples, ['x1', 'x2', 'x3'])
In [15]:
#Multiple 1D subplots
g = plots.getSubplotPlotter(width_inch=5)
g.settings.axes_fontsize = 9
g.settings.legend_fontsize = 10
g.plots_1d(samples, ['x0', 'x1', 'x2', 'x3'], nx=2);
In [16]:
#Multiple 2D subplots
g = plots.getSubplotPlotter(subplot_size=2.5)
g.plots_2d(samples, param_pairs=[['x0', 'x1'], ['x2', 'x3']], 
           nx=2, filled=True);
In [17]:
#Customized triangle plot
g = plots.getSubplotPlotter()
g.settings.figure_legend_frame = False
g.triangle_plot([samples, samples2], ['x0', 'x1', 'x2'], 
    legend_labels=['Simulation', 'Simulation 2'], 
    legend_loc='upper right', 
    line_args=[{'ls':'--', 'color':'green'},
               {'lw':2, 'color':'darkblue'}],