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.280514  4.915146  11.167020  13.737421      -3.010889
1  1.109988  3.545579   9.042508  15.437870      -3.329602
2 -0.363460  4.770013  11.417739  13.291276      -3.819600
3  0.385503  4.193560   7.994088  16.948732      -5.369692
4  1.119227  4.866535   8.490225  16.337400      -3.557786

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 4.342 seconds)

Download Python source code: plot_1_summary.py

Download Jupyter notebook: plot_1_summary.ipynb

Gallery generated by mkdocs-gallery