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 -1.040250  6.595265  11.846556  13.958347      -5.739849
1  0.148577  4.714103  10.132054  14.526305      -2.377831
2 -0.958227  5.307347  10.350359  15.256772      -4.034572
3 -2.053100  6.580461  11.533316  13.577093      -4.132973
4 -2.213767  6.849442  11.262830  13.912170      -4.671505

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.238 seconds)

Download Python source code: plot_1_summary.py

Download Jupyter notebook: plot_1_summary.ipynb

Gallery generated by mkdocs-gallery