arviz.plot_density(data, group='posterior', data_labels=None, var_names=None, credible_interval=0.94, point_estimate='mean', colors='cycle', outline=True, hpd_markers='', shade=0.0, bw=4.5, figsize=None, textsize=None)[source]

Generate KDE plots for continuous variables and histograms for discrete ones.

Plots are truncated at their 100*(1-alpha)% credible intervals. Plots are grouped per variable and colors assigned to models.

dataUnion[Object, Iterator[Object]]

Any object that can be converted to an az.InferenceData object, or an Iterator returning a sequence of such objects. Refer to documentation of az.convert_to_dataset for details about such objects.

group: Optional[str]

Specifies which InferenceData group should be plotted. Defaults to ‘posterior’. Alternative values include ‘prior’ and any other strings used as dataset keys in the InferenceData.


List with names for the datasets passed as “data.” Useful when plotting more than one dataset. Must be the same shape as the data parameter. Defaults to None.

var_names: Optional[List[str]]

List of variables to plot. If multiple datasets are supplied and var_names is not None, will print the same set of variables for each dataset. Defaults to None, which results in all the variables being plotted.


Credible intervals. Should be in the interval (0, 1]. Defaults to 0.94.


Plot point estimate per variable. Values should be ‘mean’, ‘median’ or None. Defaults to ‘mean’.


List with valid matplotlib colors, one color per model. Alternative a string can be passed. If the string is cycle, it will automatically choose a color per model from matplolib’s cycle. If a single color is passed, e.g. ‘k’, ‘C2’ or ‘red’ this color will be used for all models. Defaults to cycle.


Use a line to draw KDEs and histograms. Default to True


A valid matplotlib.markers like ‘v’, used to indicate the limits of the hpd interval. Defaults to empty string (no marker).


Alpha blending value for the shaded area under the curve, between 0 (no shade) and 1 (opaque). Defaults to 0.


Bandwidth scaling factor for the KDE. Should be larger than 0. The higher this number the smoother the KDE will be. Defaults to 4.5 which is essentially the same as the Scott’s rule of thumb (the default rule used by SciPy).

figsizeOptional[Tuple[int, int]]

Figure size. If None it will be defined automatically.

textsize: Optional[float]

Text size scaling factor for labels, titles and lines. If None it will be autoscaled based on figsize.

axMatplotlib axes


Plot default density plot

>>> import arviz as az
>>> centered = az.load_arviz_data('centered_eight')
>>> non_centered = az.load_arviz_data('non_centered_eight')
>>> az.plot_density([centered, non_centered])

Plot subset variables by specifying variable name exactly

>>> az.plot_density([centered, non_centered], var_names=["mu"])

Plot a specific az.InferenceData group

>>> az.plot_density([centered, non_centered], var_names=["mu"], group="prior")

Specify credible interval

>>> az.plot_density([centered, non_centered], var_names=["mu"], credible_interval=.5)

Shade plots and/or remove outlines

>>> az.plot_density([centered, non_centered], var_names=["mu"], outline=False, shade=.8)

Specify binwidth for kernel density estimation

>>> az.plot_density([centered, non_centered], var_names=["mu"], bw=.9)