docs: def joined_attrs(self, delimiter=', ', enhanced=True, plot_data=False,
                       keep_all=True):
          """Join the attributes of the arrays in this project
  
          Parameters
          ----------
          %(join_dicts.parameters.delimiter)s
          enhanced: bool
              If True, the :meth:`psyplot.plotter.Plotter.get_enhanced_attrs`
              method is used, otherwise the :attr:`xarray.DataArray.attrs`
              attribute is used.
          plot_data: bool
              It True, use the :attr:`psyplot.plotter.Plotter.plot_data`
              attribute of the plotters rather than the raw data in this project
          %(join_dicts.parameters.keep_all)s
  
          Returns
          -------
          dict
              A mapping from the attribute to the joined attributes which are
              either strings or (if there is only one attribute value), the
              data type of the corresponding value"""
          if enhanced:
              all_attrs = [
                  plotter.get_enhanced_attrs(
                      getattr(plotter, 'plot_data' if plot_data else 'data'))
                  for plotter in self.plotters]
          else:
              if plot_data:
                  all_attrs = [plotter.plot_data.attrs
                               for plotter in self.plotters]
              else:
                  all_attrs = [arr.attrs for arr in self]
          return utils.join_dicts(all_attrs, delimiter=delimiter,
                                  keep_all=keep_all)