diff --git a/doc/_static/css/custom.css b/doc/_static/css/custom.css
new file mode 100644
index 00000000..4bb8b69a
--- /dev/null
+++ b/doc/_static/css/custom.css
@@ -0,0 +1,17 @@
+div.initial {}
+
+div.itemBox {
+ display: none;
+
+}
+
+.item_image {
+ width: 70vw;
+ height: auto;
+}
+
+button {
+ font-size: 1.5vw;
+ border-radius: 0.25vw;
+ color: white;
+}
diff --git a/doc/_static/images/animation.gif b/doc/_static/images/animation.gif
new file mode 100644
index 00000000..b69e8f20
Binary files /dev/null and b/doc/_static/images/animation.gif differ
diff --git a/doc/_static/images/nband1.png b/doc/_static/images/nband1.png
new file mode 100644
index 00000000..64b029cf
Binary files /dev/null and b/doc/_static/images/nband1.png differ
diff --git a/doc/_static/images/nband2.png b/doc/_static/images/nband2.png
new file mode 100644
index 00000000..d82afa75
Binary files /dev/null and b/doc/_static/images/nband2.png differ
diff --git a/doc/_static/images/nband3.png b/doc/_static/images/nband3.png
new file mode 100644
index 00000000..70a894c1
Binary files /dev/null and b/doc/_static/images/nband3.png differ
diff --git a/doc/_static/images/nband4.png b/doc/_static/images/nband4.png
new file mode 100644
index 00000000..46f24922
Binary files /dev/null and b/doc/_static/images/nband4.png differ
diff --git a/doc/_static/images/nband5.png b/doc/_static/images/nband5.png
new file mode 100644
index 00000000..60b78add
Binary files /dev/null and b/doc/_static/images/nband5.png differ
diff --git a/doc/_static/images/nband6.png b/doc/_static/images/nband6.png
new file mode 100644
index 00000000..34e57a6e
Binary files /dev/null and b/doc/_static/images/nband6.png differ
diff --git a/doc/_static/images/nband7.png b/doc/_static/images/nband7.png
new file mode 100644
index 00000000..9cb83c08
Binary files /dev/null and b/doc/_static/images/nband7.png differ
diff --git a/doc/animate_nbands.html b/doc/animate_nbands.html
new file mode 100644
index 00000000..dbc04e79
--- /dev/null
+++ b/doc/animate_nbands.html
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+ →
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/api/plotting_api.rst b/doc/api/plotting_api.rst
index 613a745b..d2cec5b5 100644
--- a/doc/api/plotting_api.rst
+++ b/doc/api/plotting_api.rst
@@ -12,14 +12,14 @@ prospect.plotting.utils
:members: sample_prior, sample_posterior
prospect.plotting.sfh
------------------------
+---------------------
.. automodule:: prospect.plotting.sfh
:members: sfh_quantiles, parametric_sfr, nonpar_recent_sfr, parametric_mwa, nonpar_mwa
prospect.plotting.corner
------------------------
+------------------------
-.. automodule:: prospect.plotting.utils
+.. automodule:: prospect.plotting.corner
:members: quantile, marginal, corner
diff --git a/doc/conf.py b/doc/conf.py
index 01e65f3d..22401185 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -100,6 +100,7 @@
# html_short_title = None
html_static_path = ["_static"]
+html_css_files = ['css/custom.css']
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
diff --git a/doc/demo.rst b/doc/demo.rst
index 829a2eca..bea669b7 100644
--- a/doc/demo.rst
+++ b/doc/demo.rst
@@ -4,12 +4,18 @@ You can check out the Jupyter notebook demo at
* `InteractiveDemo `_
-Also, below is an example of inference from an increasing number of photometric bands.
-Model parameters and SEDs are inferred (in grey) from a changing number of mock
-photometric bands. The mock is generated at the parameters marked in blue. This
-shows how with a small amount of data most posteriors are determined by the
-prior (dashed red) but that as the number of bands increases, the data are more
-infomative and the posterior distributions are narrower than the prior.
-
-.. image:: images/animation.gif
- :align: center
+Interactive Figure
+------------------
+
+Also, below is an example of inference from an increasing number of photometric
+bands. Model parameters and SEDs are inferred (in blue) from a changing number
+of mock photometric bands (grey points). The mock is generated at the parameters
+and with the SED marked in black. This shows how with a small amount of data
+most posteriors are determined by the prior (dotted green) but that as the
+number of bands increases, the data are more infomative and the posterior
+distributions are narrower than the prior.
+
+Click the buttons show the inference for different filter sets:
+
+.. raw:: html
+ :file: animate_nbands.html
\ No newline at end of file
diff --git a/doc/faq.rst b/doc/faq.rst
index c25c834c..68e833bb 100644
--- a/doc/faq.rst
+++ b/doc/faq.rst
@@ -145,7 +145,7 @@ simultaneously. See
What bins should I use for the non-parametric SFH?
--------------------------------------------------
+--------------------------------------------------
Deciding on the "optimal" number of bins to use in such non-parametric SFHs is a
difficult question. The pioneering work of
`ocvirk06 `_
@@ -186,7 +186,7 @@ large samples of objects.
What settings should I use for `dynesty`?
---------------------------------------
+-----------------------------------------
The default `dynesty` settings in |Codename| are optimized for a
low-dimensional (N=4-7) model. Higher-dimensional models with more complex
likelihood spaces will likely require more advanced `dynesty` settings to
@@ -214,7 +214,7 @@ sampling has converged to the correct *distribution*
How do I use `emcee` in |Codename|?
--------------------------------------
+-----------------------------------
For each parameter, an initial value (``"init"`` in the parameter specification)
must be given. The ensemble of walkers is initialized around this value, with a
Gaussian spread that can be specified separately for each parameter. Each
@@ -315,13 +315,13 @@ This is a general question for MC sampling techniques.
Why isn't the posterior PDF centered on the highest posterior probability sample?
----------------------------------------------------------------------
+---------------------------------------------------------------------------------
How do I interpret the `lnprobability` or `lnp` values? Why do I get `lnp > 0`?
-------------------------------------------------------------------------------
How do I know if Prospector is "working"?
----------------------------------------
+-----------------------------------------
diff --git a/doc/requirements.txt b/doc/requirements.txt
index c7338516..52452576 100644
--- a/doc/requirements.txt
+++ b/doc/requirements.txt
@@ -1,3 +1,4 @@
numpy >= 1.16
scipy >= 1.1.0
+matplotlib >= 3.0
sphinx>=1.7.5
diff --git a/prospect/plotting/corner.py b/prospect/plotting/corner.py
index 1189d02e..a102b83f 100644
--- a/prospect/plotting/corner.py
+++ b/prospect/plotting/corner.py
@@ -6,10 +6,13 @@
import numpy as np
from scipy.ndimage import gaussian_filter as norm_kde
-import matplotlib.pyplot as pl
-from matplotlib.ticker import MaxNLocator, NullLocator
-from matplotlib.ticker import ScalarFormatter
-from matplotlib.colors import LinearSegmentedColormap, colorConverter
+try:
+ import matplotlib.pyplot as pl
+ from matplotlib.ticker import MaxNLocator, NullLocator
+ from matplotlib.ticker import ScalarFormatter
+ from matplotlib.colors import LinearSegmentedColormap, colorConverter
+except(ImportError):
+ pass
__all__ = ["allcorner", "show_extras", "prettify_axes", "corner",
diff --git a/prospect/plotting/figuremaker.py b/prospect/plotting/figuremaker.py
index 0012f41b..fe96e84f 100644
--- a/prospect/plotting/figuremaker.py
+++ b/prospect/plotting/figuremaker.py
@@ -5,7 +5,10 @@
"""
import numpy as np
-import matplotlib.pyplot as pl
+try:
+ import matplotlib.pyplot as pl
+except(ImportError):
+ pass
from ..io import read_results as reader
from ..io.write_results import chain_to_struct, dict_to_struct