class_docstr: Jitter points to avoid overplotting
  
  Parameters
  ----------
  width :
      Proportion to jitter in horizontal direction.
      If `None`, `0.4` of the resolution of the data.
  height :
      Proportion to jitter in vertical direction.
      If `None`, `0.4` of the resolution of the data.
  random_state :
      Seed or Random number generator to use. If `None`, then
      numpy global generator :class:`numpy.random` is used.
class_docstr_tok: ["Jitter","points","to","avoid","overplotting","Parameters","--","--","--","--","--","width",":","Proportion","to","jitter","in","horizontal","direction",".","If","`","None","`",",","`","0.4","`","of","the","resolution","of","the","data",".","height",":","Proportion","to","jitter","in","vertical","direction",".","If","`","None","`",",","`","0.4","`","of","the","resolution","of","the","data",".","random_state",":","Seed","or","Random","number","generator","to","use",".","If","`","None","`",",","then","numpy","global","generator",":","class",":","`","numpy.random","`","is","used","."]
code: def setup_params(self, data):
      params = deepcopy(self.params)
      if params["width"] is None:
          params["width"] = resolution(data["x"]) * 0.4
      if params["height"] is None:
          params["height"] = resolution(data["y"]) * 0.4
      if not params["random_state"]:
          params["random_state"] = np.random
      return params
  
file_path: plotnine/plotnine/positions/position_jitter.py
imports: from __future__ import annotations
  import typing
  from copy import deepcopy
  import numpy
  from .._utils import jitter, resolution
  from .position import position
label_desc: Use image node_id 2 for calling the position_jitter obj's underlying member method code with example usage: obj.setup_params(data) and returns: params