code: def use_defaults(self, data):
          
          missing_aes = (self.DEFAULT_AES.keys() -
                         self.aes_params.keys() -
                         set(data.columns))
  
          # Not in data and not set, use default
          for ae in missing_aes:
              data[ae] = self.DEFAULT_AES[ae]
  
          # If set, use it
          for ae, value in self.aes_params.items():
              try:
                  data[ae] = value
              except ValueError:
                  # sniff out the special cases, like custom
                  # tupled linetypes, shapes and colors
                  if is_valid_aesthetic(value, ae):
                      data[ae] = [value]*len(data)
                  else:
                      msg = ("'{}' does not look like a "
                             "valid value for `{}`")
                      raise PlotnineError(msg.format(value, ae))
  
          return data
docs: Combine data with defaults and set aesthetics from parameters
  
          geoms should not override this method.
  
          Parameters
          ----------
          data : dataframe
              Data used for drawing the geom.
  
          Returns
          -------
          out : dataframe
              Data used for drawing the geom.