//  [python]
def plot_all(
            self,
            num_chains: Optional[int] = None,
            therm_frac: float = 0.,
            title: Optional[str] = None,
            outdir: Optional[os.PathLike] = None,
            subplots_kwargs: Optional[dict[str, Any]] = None,
            plot_kwargs: Optional[dict[str, Any]] = None,
    ):
        plot_kwargs = {} if plot_kwargs is None else plot_kwargs
        subplots_kwargs = {} if subplots_kwargs is None else subplots_kwargs
        dataset = self.get_dataset()

        plt.style.use(opinionated.STYLES['opinionated_min'])
        _ = make_ridgeplots(
            dataset,
            outdir=outdir,
            drop_nans=True,
            drop_zeros=False,
            num_chains=num_chains,
            cmap='viridis',
            save_plot=(outdir is not None),
        )

        plt.style.use(opinionated.STYLES['opinionated_min'])
        max_chains = 64
        for idx, (key, val) in enumerate(dataset.data_vars.items()):
            # val = val
            color = f'C{idx%9}'
            plot_kwargs['color'] = color
            if 'chain' in val.dims:
                nchains = max(max_chains, len(val.coords['chain']))
                val = val.sel(chain=slice(0, nchains))
            fig, subfigs, ax = self.plot(
                val=val.values.T.real,
                key=str(key),
                title=title,
                outdir=outdir,
                therm_frac=therm_frac,
                num_chains=num_chains,
                plot_kwargs=plot_kwargs,
                subplots_kwargs=subplots_kwargs,
            )
            if fig is not None:
                _ = sns.utils.despine(
                    fig,
                    top=True,
                    right=True,
                    bottom=True,
                    left=True
                )

            # _ = plt.grid(True, alpha=0.4)
            if subfigs is not None:
                # edgecolor = plt.rcParams['axes.edgecolor']
                plt.rcParams['axes.edgecolor'] = plt.rcParams['axes.facecolor']
                ax = subfigs[0].subplots(1, 1)
                # ax = fig[1].subplots(constrained_layout=True)
                _ = xplt.pcolormesh(
                    val,
                    'draw',
                    'chain',
                    ax=ax,
                    robust=True,
                    add_colorbar=True,
                    rasterized=True,
                )
                # im = val.plot(ax=ax, cbar_kwargs=cbar_kwargs)
                # im.colorbar.set_label(f'{key}')  # , labelpad=1.25)
                sns.utils.despine(
                    subfigs[0],
                    top=True,
                    right=True,
                    left=True,
                    bottom=True
                )
            if outdir is not None:
                dirs = {
                    'png': Path(outdir).joinpath("pngs/"),
                    'svg': Path(outdir).joinpath("svgs/"),
                }
                _ = [
                    i.mkdir(exist_ok=True, parents=True) for i in dirs.values()
                ]
                log.info(
                    f"Saving {key} plot to: "
                    f"{Path(outdir).resolve().relative_to(PROJECT_DIR)}"
                )
                for ext, d in dirs.items():
                    outfile = d.joinpath(f"{key}.{ext}")
                    if outfile.is_file():
                        log.info(
                            f"Saving {key} plot to: "
                            f"{outfile.resolve().relative_to(PROJECT_DIR)}"
                        )
                        outfile = d.joinpath(f"{key}-subfig.{ext}")
                    # log.info(f"Saving {key}.ext to: {outfile}")
                    plt.savefig(outfile, dpi=400, bbox_inches='tight')
            if is_interactive():
                plt.show()

        return dataset