code: def _draw_labels(self):
          
          # This is very laboured. Should be changed when MPL
          # finally has a constraint based layout manager.
          figure = self.figure
          get_property = self.theme.themeables.property
  
          try:
              margin = get_property('axis_title_x', 'margin')
          except KeyError:
              pad_x = 5
          else:
              pad_x = margin.get_as('t', 'pt')
  
          try:
              margin = get_property('axis_title_y', 'margin')
          except KeyError:
              pad_y = 5
          else:
              pad_y = margin.get_as('r', 'pt')
  
          # Get the axis labels (default or specified by user)
          # and let the coordinate modify them e.g. flip
          labels = self.coordinates.labels({
              'x': self.layout.xlabel(self.labels),
              'y': self.layout.ylabel(self.labels)
          })
  
          # The first axes object is on left, and the last axes object
          # is at the bottom. We change the transform so that the relevant
          # coordinate is in figure coordinates. This way we take
          # advantage of how MPL adjusts the label position so that they
          # do not overlap with the tick text. This works well for
          # facetting with scales='fixed' and also when not facetting.
          # first_ax = self.axs[0]
          # last_ax = self.axs[-1]
  
          xlabel = self.facet.last_ax.set_xlabel(
              labels['x'], labelpad=pad_x)
          ylabel = self.facet.first_ax.set_ylabel(
              labels['y'], labelpad=pad_y)
  
          xlabel.set_transform(mtransforms.blended_transform_factory(
              figure.transFigure, mtransforms.IdentityTransform()))
          ylabel.set_transform(mtransforms.blended_transform_factory(
              mtransforms.IdentityTransform(), figure.transFigure))
  
          figure._themeable['axis_title_x'] = xlabel
          figure._themeable['axis_title_y'] = ylabel
docs: Draw x and y labels onto the figure