code: def _formatter(self, x=None, y=None, z=None, s=None, label=None, **kwargs):
          def is_date(axis):
              fmt = axis.get_major_formatter()
              return (isinstance(fmt, mdates.DateFormatter)
                   or isinstance(fmt, mdates.AutoDateFormatter))
          def format_date(num):
              if num is not None:
                  return mdates.num2date(num).strftime(self.date_format)
          ax = kwargs['event'].artist.axes
          if is_date(ax.xaxis):
              x = format_date(x)
          else:
              limits = ax.get_xlim()
              x = self._format_coord(x, limits)
              kwargs['xerror'] = self._format_coord(kwargs.get('xerror'), limits)
          if is_date(ax.yaxis):
              y = format_date(y)
          else:
              limits = ax.get_ylim()
              y = self._format_coord(y, limits)
              kwargs['yerror'] = self._format_coord(kwargs.get('yerror'), limits)
          output = []
          for key, val in zip(['x', 'y', 'z', 's'], [x, y, z, s]):
              if val is not None:
                  try:
                      output.append(u'{key}: {val:0.3g}'.format(key=key, val=val))
                  except ValueError:
                      output.append(u'{key}: {val}'.format(key=key, val=val))
          if label and not label.startswith('_'):
              output.append(u'Label: {}'.format(label))
          if kwargs.get(u'point_label', None) is not None:
              output.append(u'Point: ' + u', '.join(kwargs['point_label']))
          for arg in ['xerror', 'yerror']:
              val = kwargs.get(arg, None)
              if val is not None:
                  output.append(u'{}: {}'.format(arg, val))
          return u'\n'.join(output)