docstr: Set and update the `~matplotlib.axis.Axis` units.
  
  Parameters
  ----------
  data : str or iterable of str
  axis : `~matplotlib.axis.Axis`
      axis on which the data is plotted
  
  Returns
  -------
  `.UnitData`
      object storing string to integer mapping
docstr_tok: ["Set","and","update","the","`","~matplotlib.axis.Axis","`","units",".","Parameters","--","--","--","--","--","data",":","str","or","iterable","of","str","axis",":","`","~matplotlib.axis.Axis","`","axis","on","which","the","data","is","plotted","Returns","--","--","--","-","`",".UnitData","`","object","storing","string","to","integer","mapping"]
code: def default_units(data, axis):
      """
      Set and update the `~matplotlib.axis.Axis` units.
  
      Parameters
      ----------
      data : str or iterable of str
      axis : `~matplotlib.axis.Axis`
          axis on which the data is plotted
  
      Returns
      -------
      `.UnitData`
          object storing string to integer mapping
      """
      # the conversion call stack is default_units -> axis_info -> convert
      if axis.units is None:
          axis.set_units(UnitData(data))
      else:
          axis.units.update(data)
      return axis.units
  
imports: from collections import OrderedDict
  import dateutil.parser
  import itertools
  import logging
  import numpy
  from matplotlib import _api, ticker, units
label_desc: Use image node_id 3 for calling the StrCategoryConverter obj's underlying member method code with example usage: obj.default_units(data, axis) and returns: axis