Skip to content

Note

Click here to download the full example code

Introduction to Summaries

When you have a few chains and want to contrast them all with each other, you probably want a summary plot.

To show you how they work, let's make some sample data that all has the same average.

from chainconsumer import Chain, ChainConfig, ChainConsumer, PlotConfig, Truth, make_sample

# Here's what you might start with
df_1 = make_sample(num_dimensions=4, seed=1)
df_2 = make_sample(num_dimensions=5, seed=2)
print(df_1.head())

Out:

          A         B          C          D  log_posterior
0  0.492927  4.393551   8.945172  16.182573      -2.813765
1 -0.373115  3.735024   9.073357  15.513492      -5.662393
2  1.153838  5.434439   8.655611  16.292785      -4.324239
3 -0.728912  3.948773  10.656997  14.002602      -4.427366
4  1.317778  3.549181   8.499001  16.354701      -3.394223

Using distributions

# And now we give this to chainconsumer
c = ChainConsumer()
c.add_chain(Chain(samples=df_1, name="An Example Contour"))
c.add_chain(Chain(samples=df_2, name="A Different Contour"))
fig = c.plotter.plot_summary()

A, B, C, D, E

Using Errorbars

Note that because the errorbar kwarg is specific to this function it is not part of the PlotConfig class.

fig = c.plotter.plot_summary(errorbar=True)

A, B, C, D, E

The other features of ChainConsumer should work with summaries too.

For example, truth values should work just fine.

c.add_truth(Truth(location={"A": 0, "B": 1}, line_style=":", color="red"))
fig = c.plotter.plot_summary(errorbar=True, vertical_spacing_ratio=2.0)

A, B, C, D, E

And similarly, our overrides are generic and so effect this method too.

c.set_override(ChainConfig(bar_shade=False))
c.set_plot_config(PlotConfig(watermark="Preliminary", blind=["E"]))
fig = c.plotter.plot_summary()

A, B, C, D, E

Total running time of the script: ( 0 minutes 7.369 seconds)

Download Python source code: plot_1_summary.py

Download Jupyter notebook: plot_1_summary.ipynb

Gallery generated by mkdocs-gallery