docs: def comparedist(df, *args, **kwargs):
      """
      Compare the distributions of two DataFrames giving visualisations of:
       - individual and combined distributions
       - distribution of non-common values
       - distribution of non-common values vs. each side
  
      Plot distribution as area (fill_between) + mean, median vertical bars.
  
      :param df1: `pandas.DataFrame`
      :param arg0: the base dataframe *selector* to perform calculation against.
      :param *: a number of `pandas.DataFrames` selectors to compare to arg0
      :param bins: `int` number of bins for histogram
      :param xlabel: label for X axis
      :param ylabel: label for Y axis
      :param base_fmt: Text format to use for base selector legend. Python .format() syntax.
      :param arg_fmt: Text format to use for format, with selectors legend. Python .format() syntax.
      :return: Figure
      """
  
      bins = kwargs.get('bins', 50)
      xlabel = kwargs.get('xlabel', 'Value')
      ylabel = kwargs.get('ylabel', 'Count')
      base_fmt = kwargs.get('base_fmt')
      arg_fmt = kwargs.get('arg_fmt')
  
      # The base for comparisons is the first passed selector.
      base_selector, selectors = args[0], args[1:]
      df1 = df[base_selector]
  
      fig, axes = plt.subplots(len(selectors), 1, figsize=(10, len(selectors) * 5))
  
      if not isinstance(axes, np.ndarray):
          axes = [axes]  # mpl returns a single object when only one.
  
      for n, (ax1, selector) in enumerate(zip(axes, selectors)):
  
          dfn = df[selector]
  
          xr = np.nanmin( [np.nanmin(df1), np.nanmin(dfn)] ), np.nanmax( [np.nanmax(df1), np.nanmax(dfn)] )
  
          ax1.set_title('Distributions of %s and %s' % (base_selector, selector))
          _areadist(ax1, dfn.values, xr, c='r', bins=bins, label=format_label(base_selector, base_fmt))
          _areadist(ax1, df1.values, xr, c='k', bins=bins, alpha=0.3, label=format_label(selector, arg_fmt))
  
          ax1.set_xlabel(xlabel)
          ax1.set_ylabel(ylabel)
          _, ymax = ax1.get_ylim()
          ax1.set_ylim(0, ymax)
  
          ax1.legend(loc='upper right')
  
      fig.tight_layout()
      return fig