code: def plot_posterior_marginal(self, idx_param=0, res=100, smoothing=0,
              range_min=None, range_max=None, label_xaxis=True,
              other_plot_args={}, true_model=None
          ):
          
          res = plt.plot(*self.posterior_marginal(
              idx_param, res, smoothing,
              range_min, range_max
          ), **other_plot_args)
          if label_xaxis:
              plt.xlabel('${}$'.format(self.model.modelparam_names[idx_param]))
          if true_model is not None:
              true_model = true_model[0, idx_param] if true_model.ndim == 2 else true_model[idx_param]
              old_ylim = plt.ylim()
              plt.vlines(true_model, old_ylim[0] - 0.1, old_ylim[1] + 0.1, color='k', linestyles='--')
              plt.ylim(old_ylim)
  
          return res
docs: Plots a marginal of the requested parameter.
  
          :param int idx_param: Index of parameter to be marginalized.
          :param int res1: Resolution of of the axis.
          :param float smoothing: Standard deviation of the Gaussian kernel
              used to smooth; same units as parameter.
          :param float range_min: Minimum range of the output axis.
          :param float range_max: Maximum range of the output axis.
          :param bool label_xaxis: Labels the :math:`x`-axis with the model parameter name
              given by this updater's model.
          :param dict other_plot_args: Keyword arguments to be passed to
              matplotlib's ``plot`` function.
          :param np.ndarray true_model: Plots a given model parameter vector
              as the "true" model for comparison.
  
          .. seealso::
  
              :meth:`SMCUpdater.posterior_marginal`